Двоичная система счисления

Системы счисления

quote

Система счисления - это способ записи (представления) чисел.

Вообще, существует много разных систем счисления. Римская, вавилонская, древнеегипетская... За историю человечества было придумано много способов для реализации такой, казалось бы, простой и базовой потребности - для записи чисел.

Каждый день мы используем десятичную систему счисления.

Позиционные и непозиционные системы счисления.

В зависимости от того, имеет ли значимость порядок цифр в записи числа, системы бывают позиционными и непозиционными.

Например, десятичная система - позиционная, так как когда мы с её помощью записываем числа, порядок цифр имеет значение. Записи 199 и 991 будут обозначать два разных числа.

Римская же система счисления - непозиционная (с некоторыми оговорками). Записи MCX, CMX и XCM будут обозначать одно и то же число (1110).

Запись числа в десятичной системе счисления

Итак, как уже было сказано, самая общеиспользуемая система счисления - это десятичная.

Называется она десятичной потому, что для записи чисел с её помощью используется десять знаков: 0123456789.

Что же означает запись числа в десятичной счисления? Давайте попробуем "разложить" некоторые числа:

\( 123 = 1 * 100 + 2 * 10 + 3 \)
\( 7491 = 7 * 1000 + 4 * 100 + 9 * 10 + 1 \)

Думаю, не трудно заметить, что здесь прослеживается некая закономерность.

Её можно записать математически:
\( x_1x_2x_3...x_n = x_1 * 10^{n-1} + x_2 * 10^{n-2} + .. + x_n * 10^0 \)
...где:

  1. \( x_1x_2x_3...x_n \) - какое-то число в десятичной системе из n чисел
  2. \( x_1, x_2, ..., x_n \) - цифры этого числа

Число 10 в данном случае будет называться основанием системы счисления - это число доступных нам цифр для записи чисел в этой системе. Поэтому в формуле и фигурирует число 10.

Переносим правила записи числа на двоичную систему

Как несложно догадаться, двоичная (бинарная) система счисления - это позиционная система, в которой для записи чисел используются только два символа: 1 и 0.

Для этой системы будут действовать те же самые правила, что и для десятичной, но только в полученной формуле число 10 придётся заменить на число 2.

note

Чтобы дальше не путаться между системами счисления, мы будем использовать следующую запись: \( 12345_{10} \)
Где число снизу обозначает разрядность системы счисления.

Попробуем разложить бинарное число по той же схеме:

\( 100111_2 = 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 \)

Если посчитаем полученное значение, у нас получится \( 32 + 4 + 2 + 1 = 39_{10}\)

Поздравляю! Мы научились раскладывать число в двоичной системе счисления. В принципе, с другими системами счисления всё будет точно так же, но число 2 нужно будет заменить на основание используемой системы счисления.

Перевод из десятичной системы в двоичную

Итак, давайте немного порефлексируем по поводу того, как мы перевели число из двоичной системы счисления в десятичную.

По сути, что мы сделали - это представили число как сумму разных степеней двойки. Вот и всё.

Получается, если мы поймём, из каких степеней двойки "складывается" десятичное число, мы легко сможем записать его в двоичном виде.

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

  1. Сначала, как бы это дико не звучало, нам нужно запомнить первые 10 степеней двойки (10 - это я написал навскидку, это не конкретное правило).

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

СтепеньЗначение
01
12
24
38
416
532
664
7128
8256
9512
101024
  1. Смотрим на наше десятичное число, и анализируем, какая самая большая степень двойки может в него поместиться. Например, для числа 63 это будет 5-я степень \( 2:5 = 32\)
  2. Записываем число как степень двойки + остаток
  3. Повторяем все описанные шаги для остатка, пока исходное число не будет полностью записано в виде суммы степеней двоек

В принципе, всё довольно просто. Давайте рассмотрим это на примере.

Примеры

Перевод числа из десятичной системы в двоичную

Начальное число: 1083

  1. Самая большая влезающая степень двойки - 1024.
  2. Записываем 1083 как 1024 + 59. Далее анализируем число 59.
  3. В 59 максимум может поместиться только 32.
  4. Записываем 59 как 32 + 27. Далее анализируем число 27.
  5. В 27 влезает только 16.
  6. Записываем 27 как 16 + 11. Далее анализируем 11.
  7. В 11 максимум влезает 8.
  8. Записываем 11 как 8 + 3. Далее анализируем 3
  9. Ну, с тройкой всё уже понятно - её можно записать просто как 2 + 1
  10. Теперь собираем по кусочкам все полученные степени двойки и получаем следующую запись: \( 1083 = 1024 + 32 + 16 + 8 + 2 + 1 = 2^10 + 2^5 + 2^4 + 2^3 + 2^1 + 2^0\)

Нетрудно догадаться, что искомой записью числа в двоичной системе счисления будет:
10000111011

Перевод числа из двоичной системы в десятичную

Начальное число: 11100101110110.

Длина числа - 14. Поэтому просто по формуле распиываем нужное число в десятичной системе счисления: \( 1 * 2^{13} + 1 * 2^{12} + 1 * 2^{11} + 1 * 2^8 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^2 + 1 * 2^1 = \)
\( = 8192 + 4096 + 2048 + 256 + 64 + 32 + 16 + 4 + 2 = 14710 \)

Источники

  • https://habr.com/ru/articles/124395/