Двоичная система счисления — это система счисления с основанием 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; }