Двоичная система счисления — это система счисления с основанием 2, что означает, что на выбор можно выбрать только два числовых варианта: 0 и 1. В отличие от десятичной системы счисления, которая имеет десять вариантов: 0,1,2,3,4,5,6,7, 8,9. Или шестнадцатеричный, который имеет шестнадцать вариантов: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f. В информатике одна двоичная цифра называется «бит». Восемь двоичных цифр называются «байтом».

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

В десятичном формате каждое место представляет собой степень числа десять, поскольку в каждом месте можно использовать десять потенциальных символов:

В этом примере показано число 1 765 321. Каждое разрядное значение по существу имеет обратную индексацию в степени, в которую возводится десятка. Таким образом, 1-е место индексируется при степени 0, 10-е — при степени 1, 100-е — при степени 2 и так далее.

В двоичном формате каждое разрядное число является степенью двойки, поскольку существует только два потенциальных символа:

То же самое индексирование происходит для каждого разряда, но теперь это все степени двойки: 1, 2, 4, 8, 16, 32 и так далее.

0 и 1 в каждом месте отслеживают, сколько имеется определенного разряда. В этом примере есть одна 128, 16, 8 и 2, но нет 64, 32, 4 и 1.

Подсчет в двоичном формате

Как и в десятичном, двоичный счет работает путем увеличения каждого символа в каждом месте. Когда достигается последний доступный символ для этой системы нумерации, он возвращается к нулю, а значение следующего разряда увеличивается на единицу и так далее.

Вот пример счета до десяти в двоичном формате:

Процесс преобразования из двоичного в десятичный

Используя предыдущий пример, вы можете видеть, что для нахождения десятичного значения просто нужно умножить разрядное значение (128, 64, 32 и т. д.) на 1 или 0, а затем сложить все произведения.

Процесс преобразования десятичного числа в двоичное

Преобразование из десятичного числа в двоичное требует многократного деления на два, и на каждом шаге частное становится новым делимым. Остатки отслеживаются и в конце переворачиваются, чтобы найти двоичное число.

В этом примере двоичная форма числа двадцать равна 10100.

Реализации на Java

Первый метод, BinaryToDecimal, представляет собой реализацию процесса преобразования двоичного кода в десятичный. Он принимает строку в качестве аргумента и возвращает целое число. Алгоритм выполняет итерацию по двоичной строке, преобразуя каждый символ в целочисленный эквивалент. Это число затем умножается на два, возведенных в соответствующую степень текущего значения разряда. Степень находится путем вычитания единицы и текущего индекса строки из длины строки. Сумма добавляется к переменной dec. После завершения цикла в качестве ответа возвращается dec.

public static int BinaryToDecimal(String bin) {
   int dec = 0;
   for(int i=0;i<bin.length();i++) {
      int y = bin.charAt(i) - '0';
      dec += Math.pow(2, bin.length()-1-i) * y;
   }
   return dec;
}

Следующий метод, DecimalToBinary, представляет собой реализацию процесса преобразования десятичных чисел в двоичные. Метод принимает целочисленный аргумент и возвращает строку. Метод многократно делит предоставленное десятичное число на два и на каждом проходе преобразует остаток в строку и добавляет ее к переменной bin. Создается перевернутая копия строки bin с именем binCopy, которая возвращается как двоичный результат.

public static String DecimalToBinary(int dec) {
   String bin = "";
   while (dec > 0){
      bin += Integer.toString(dec%2);
      dec = dec/2;
   }
   String binCopy = "";
   for(int i=1; i <= bin.length(); i++) {
      binCopy += bin.charAt(bin.length()-i);
   }
   return binCopy;
}