Есть классический анекдот. Это выглядит так:

Есть 10 типов людей, которые понимают двоичный код...

Я имею в виду, это просто смешно, но мне все равно это нравится. Зачем нужно знать о двоичных числах? Дядя Оуэн (из «Звездных войн») ищет дроида, который понимает двоичный язык испарителей влаги (который, по словам C3PO, он понимает). Однако в реальном мире двоичная система — это система счисления, которую любят использовать компьютеры.

В этом посте я собираюсь рассмотреть следующие три системы счисления:

  • Десятичная дробь. Вы уже знаете эту систему. Это набор из 10 чисел от 0 до 9. О, смотри, на твоих руках тоже 10 пальцев. Ух ты.
  • Бинарный. В этой системе счисления всего два числа. Это 1 и 0.
  • Шестнадцатеричный. Здесь 16 номеров. Мы используем 0–9 плюс A, B, C, D, E, F (поскольку у нас закончились десятичные числа).

Я собираюсь показать, как преобразовать двоичное число в десятичное (и обратно), а затем то же самое для шестнадцатеричного. Хотя вы можете использовать встроенные функции в Python, мы собираемся написать некоторый код в основном с нуля (потому что это будет весело).

Базовые 10 чисел

Если вы хотите понять двоичную систему, вы должны сначала понять десятичную систему. Предположим, у вас есть число вроде 324. Что это на самом деле означает? В системе с основанием 10 каждое число имеет разрядное значение. Все они представляют степени числа 10. Вот значения разрядов (да, я знаю, что вы все это знаете).

Это означает, что 324 будет:

Теперь мы можем использовать эту же идею для двоичных чисел.

Числа с основанием 2

В двоичной системе счисления есть только два числа — 0 и 1. Это означает, что каждое «местное значение» представляет собой степень числа 2 (вместо степени числа 10).

Давайте продолжим и возьмем двоичное число и преобразуем его в десятичное число.

Двоичный в десятичный

Как насчет 11010? Помните, что каждое из этих чисел представляет, сколько у нас есть этой разрядной стоимости. Начиная с крайнего левого числа, у нас есть 1 на месте 2⁴. Это означает, что у нас есть одна 16. Затем у нас есть одна восьмерка, ноль четверок, одна двойка и ноль единиц.