Modulo — модуль деления — введение в Java #010

Modulo

Modulo — в специализированной литературе "modulo" называется оператором деления по модулю или взятием модуля деления. В Java обозначается "%". Используется это в программировании, например для перевода десятичных числе в двоичные. Не надо путать этот оператор с делением "/".
Замечу, что в Википедии на данный момент по запросу modulo выводится статья про "деление с остатком" . Это грубейшая ошибка. Модуль деления — это вычисление остатка от деления целых чисел. Хотелось бы привести оба оператора и показать разницу.

  1. 56 % 24 = 8;
  2. 56 / 24 = 2;

24 дважды помещается в 56 и ещё в остатке имеем 8. Читается это так :
— Целочисленный остаток от деления 56 на 24 равно 8.

Я выговариваю это так: "56 модуло 24 равно 8"

С делением дела обстоят немного по другому. Если мы говорим только о целых числах "int", то при делении 56 на 24 получаем 2.

Простейший пример в Java выглядит вот так:

  1. public class Modulo {
  2.     public static void main (String args []) {
  3.         int x = 85;
  4.         int y = 7;
  5.  
  6.         System.out.println(x + " mod "+ y + " = " + x % 7);
  7.         System.out.println(x + " / "+ y + " = " + x / 7);
  8.     }
  9. }

На экране мы получаем:

  1. 85 mod 7 = 1
  2. 85 / 7 = 12

Давайте рассмотрим ещё один пример очень подробно:

  1. 78 : 2 = 39 остаток: 0
  2. 39 : 2 = 19 остаток: 1
  3. 19 : 2 =  9 остаток: 1
  4.  9 : 2 =  4 остаток: 1
  5.  4 : 2 =  2 остаток: 0
  6.  2 : 2 =  1 остаток: 0
  7.  1 : 2 =  0 остаток: 1

В итоге мы получили 1001110, что в двоичной системе соответствует 78 в десятичной.

И конечно же мы можем написать программу, которая нам переводит любое десятичное число в двоичное.

  1. /**
  2.  * Дано: десятичное число
  3.  * Найти: соответствие ему в двоичной системе
  4.  * Как будем решать : использование modulo, ввод данных с клавиатуры, использование while цикла
  5.  * Решено? (Да/Нет) : да
  6.  * Created by ${www.andron13.de} on 21.10.2016 on 19:49.
  7.  */
  8. import java.util.Scanner;
  9.  
  10. public class binaer {
  11.     public static void main(String[] args) {
  12.         Scanner eingabe = new Scanner(System.in);
  13.         int Decimal, remainder;
  14.         String output ="";
  15.         System.out.println("Введи десятичное число, например 13!");
  16.         Decimal = eingabe.nextInt();
  17.         while (Decimal>0) {
  18.             remainder = (Decimal % 2);
  19.             output = Integer.toString(remainder) + output;
  20.             Decimal = Decimal / 2;
  21.         }
  22.  
  23.         System.out.println(output);
  24.     }
  25. }

Домашнее задание:

  1. Напишите программу, которая выясняет делится число на два или нет.
  2. Программа, которая находит високосный год.
  3. В одном KByte - 1024 Byte. Напишите программу, которая например из 100.000 байтов вычисляет сколько это целых KByte и оставшихся Byte.

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
Target Image