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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Системы счисления в культуре
Индо-арабская
Арабская
Индийские
Тамильская
Бирманская
Кхмерская
Лаосская
Монгольская
Тайская
Восточноазиатские
Китайская
Японская
Сучжоу
Корейская
Вьетнамская
Счётные палочки
Алфавитные
Абджадия
Армянская
Ариабхата
Кириллическая
Греческая
Эфиопская
Еврейская
Акшара-санкхья
Другие
Вавилонская
Египетская
Этрусская
Римская
Аттическая
Кипу
Майская
Позиционные
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 26, 27, 32, 36, 60
Нега-позиционная
Симметричная
Смешанные системы
Фибоначчиева
Непозиционные
Единичная (унарная)
Список систем счисления

Двоичная система счисления — позиционная система счисления с основанием 2.

Содержание

Двоичные цифры [править]

В этой системе счисления числа записываются с помощью двух символов (0 и 1). Чтобы не путать в какой системе счисления записано число его снабжают указателем справа внизу. Например, число в десятичной системе 510, в двоичной 1012. Иногда двоичное число обозначают префиксом 0b, например 0b101.

Произношение [править]

Во всех системах счисления кроме десятичной знаки читаются по одному. Например число 1012 произносится «один ноль один».

Отрицательные числа [править]

Отрицательные двоичные числа обозначаются так же как и десятичные: знаком «−» перед числом. Однако в вычислительной технике широко используется запись отрицательных двоичных чисел в дополнительном коде, что может вносить путаницу. Например число −510 может быть записано как −1012 но в компьютере будет храниться как 111111111111111111111111111110112.

История [править]

  • В 1605 году Френсис Бэкон описал систему, буквы алфавита которой могут быть сведены к последовательностям двоичных цифр, которые в свою очередь могут быть закодированы как едва заметные изменения шрифта в любых случайных текстах. Важным шагом в становлении общей теории двоичного кодирования является замечание о том, что указанный метод может быть использован применительно к любым объектам.[7] (См. Шифр Бэкона)
  • Современная двоичная система была полностью описана Лейбницем в XVII веке в работе Explication de l’Arithmétique Binaire[8]. В системе счисления Лейбница были использованы цифры 0 и 1, как и в современной двоичной системе. Как человек, увлекающийся китайской культурой, Лейбниц знал о книге Перемен и заметил, что гексаграммы соответствуют двоичным числам от 0 до 111111. Он восхищался тем, что это отображение является свидетельством крупных китайских достижений в философской математике того времени.[9]
  • В 1937 году Клод Шеннон представил к защите кандидатскую диссертацию Символический анализ релейных и переключательных схем в MIT, в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника.
  • В ноябре 1937 года Джордж Штибиц, впоследствии работавший в Bell Labs, создал на базе реле компьютер «Model K» (от англ. «Kitchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 года Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940 года, умел выполнять операции с комплексными числами. Во время демонстрации на конференции American Mathematical Society в Дартмутском колледже 11 сентября 1940 года Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа. Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман, Джон Мокли и Норберт Винер, впоследствии писавшие об этом в своих мемуарах.

Алгебраическое представление двоичных чисел [править]

Двоичная система счисления является комбинацией двоичной системы кодирования и показательной весовой функции с основанием равным 2. Положительные целые числа (без знака) записываются в виде:

\ x_{2,2} = a_{n-1} a_{n-2}\dots a_{1} a_{0\ 2,2} = \sum_{k=0}^{n-1} a_k b^k = \sum_{k=0}^{n-1} a_k 2^k,

где:

  • \ x_{2,2} — представляемое число, первый индекс — основание системы кодирования (размерность множества цифр a={0,1}), второй индекс — основание весовой показательной функции bдвоично-десятичном кодировании b=10),
  • \ a_{n-1}a_{n-2}...a_1a_0 — запись числа, строка цифровых знаков,
  • \ .\ .\ .\ _{2,2} — обозначение основания системы кодирования и основания системы счисления,
  • \ n — количество цифр (знаков) в числе x2,2,
  • \ k — порядковый номер цифры,
  • \ a_k — цифры числа x2,2 из множества a={0,1}, в двоичной системе счисления основание системы кодирования равно 2,
  • \ b=2 — основание показательной весовой функции, основание системы счисления,
  • \ b^k=2^k — весовая показательная функция, создающая весовые коэффициенты.

Количество записываемых кодов (чисел) зависит от основания системы кодирования — c, определяется в комбинаторике и равно числу размещений с повторениями:

\bar{A}(c,n)=\bar{A}_c^n=c^n=2^n,

где:

Количество записываемых кодов (чисел) от основания показательной функции — b не зависит.
Основание показательной функции — b определяет диапазон представляемых числами x2,b величин и разреженность представляемых чисел на числовой оси.

Целые числа являются частными суммами степенного ряда:

F(X) = \sum\limits_{n=0}^{\infty}a_nX^n,

в котором коэффициенты an берутся из множества R=a{0,1}, X=2, n=k, а верхний предел в частных суммах ограничен с \infty до — n-1.

Целые числа со знаком записываются в виде:

\ x_{2,2} = za_{n-1} a_{n-2}\dots a_{1} a_{0\ 2,2} = z\sum_{k=0}^{n-1} a_k b^k,

где:

  • \ z — знак числа из множества z={+,-}, у положительных целых чисел знак зачастую опускается.

Дробные числа записываются в виде:

x_{2,2} = a_{n-1} a_{n-2}\dots a_{1} a_{0},a_{-1} a_{-2}\dots a_{-(m-1)} a_{-m\ 2,2} = \sum_{k=-m}^{n-1} a_k b^k,

где:

  • \ m — число цифр дробной части числа,
  • \ a_k — весовые коэффициенты из множества \ a_k=\{0,1\},
  • основание системы кодирования равно 2,
  • \ b=2 — основание показательной весовой функции, основание системы счисления.

Следует отметить, что число может быть записано в двоичном коде, а система счисления при этом может быть не двоичной, а с другим основанием. Пример: двоично-десятичное кодирование, в котором десятичные цифры записываются в двоичном виде, а система счисления — десятичная.

Сложение, вычитание и умножение двоичных чисел [править]

Таблица сложения

+ 0 1
0 0 1
1 1 10(перенос в старший разряд)

Таблица вычитания

- 0 1
0 0 1
1 (заём из старшего разряда) 1 0

Пример сложения «столбиком» (1410 + 510 = 1910 или 11102 + 1012 = 100112):

+ 1 1 1 0
1 0 1
1 0 0 1 1

Таблица умножения

× 0 1
0 0 0
1 0 1

Пример умножения «столбиком» (1410 * 510 = 7010 или 11102 * 1012 = 10001102):

× 1 1 1 0
1 0 1
+ 1 1 1 0
1 1 1 0
1 0 0 0 1 1 0

Преобразование чисел [править]

Для преобразования из двоичной системы в десятичную используют следующую таблицу степеней основания 2:

512 256 128 64 32 16 8 4 2 1

Начиная с цифры 1 все цифры умножаются на два. Точка, которая стоит после 1, называется двоичной точкой.

Преобразование двоичных чисел в десятичные [править]

Допустим, дано двоичное число 1100012. Для перевода в десятичное запишите его как сумму по разрядам следующим образом:

1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49

То же самое чуть иначе:

1 * 32 + 1 * 16 + 0 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 49

Можно записать это в виде таблицы следующим образом:

512 256 128 64 32 16 8 4 2 1
1 1 0 0 0 1
+32 +16 +0 +0 +0 +1

Двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа. Таким образом, двоичное число 1100012 равнозначно десятичному 4910.

Преобразование дробных двоичных чисел в десятичные [править]

Нужно перевести число 1011010,1012 в десятичную систему. Запишем это число следующим образом:

1 * 26 + 0 * 25 + 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 + 1 * 2-1 + 0 * 2-2 + 1 * 2-3 = 90,625

То же самое чуть иначе:

1 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 0 * 1 + 1 * 0,5 + 0 * 0,25 + 1 * 0,125 = 90,625

Или по таблице:

64 32 16 8 4 2 1 0.5 0.25 0.125
1 0 1 1 0 1 0. .1 0 1
+64 +0 +16 +8 +0 +2 +0 +0.5 +0 +0.125

Преобразование методом Горнера [править]

Для того, чтобы преобразовывать числа из двоичной в десятичную систему данным методом, надо суммировать цифры слева направо, умножая ранее полученный результат на основу системы (в данном случае 2). Методом Горнера обычно переводят из двоичной в десятичную систему. Обратная операция затруднительна т.к. требует навыков сложения и умножения в двоичной системе счисления.

Например, двоичное число 10110112 переводится в десятичную систему так:

0*2 + 1 = 1
1*2 + 0 = 2
2*2 + 1 = 5
5*2 + 1 = 11
11*2 + 0 = 22
22*2 + 1 = 45
45*2 + 1 = 91

То есть в десятичной системе это число будет записано как 91.

Перевод дробных чисел методом Горнера [править]

Цифры берутся из числа справа налево и делятся на основу системы счисления (2).

Например 0,11012

(0 + 1)/2 = 0,5
(0,5 + 0)/2 = 0,25
(0,25 + 1)/2 = 0,625
(0,625 + 1)/2 = 0,8125

Ответ: 0,11012= 0,812510

Преобразование десятичных чисел в двоичные [править]

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

19 /2 = 9 с остатком 1
9 /2 = 4 c остатком 1
4 /2 = 2 без остатка 0
2 /2 = 1 без остатка 0
1 /2 = 0 с остатком 1

Итак, мы делим каждое частное на 2 и записываем остаток в конец двоичной записи. Продолжаем деление до тех пор, пока в частном не будет 0. Результат записываем справа налево. То есть нижнее число будет самым левым и.т.д. В результате получаем число 19 в двоичной записи: 10011.

Преобразование дробных десятичных чисел в двоичные [править]

Если в исходном числе есть целая часть то она преобразуется отдельно от дробной. Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:

  • Дробь умножается на основание двоичной системы счисления (2);
  • В полученном произведении выделяется целая часть, которая принимается в качестве старшего разряда числа в двоичной системе счисления;
  • Алгоритм завершается, если дробная часть полученного произведения равна нулю или если достигнута требуемая точность вычислений. В противном случае вычисления продолжаются над дробной частью произведения.

Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.

Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам. Дробную часть 0,116 умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:

0,116 • 2 = 0,232
0,232 • 2 = 0,464
0,464 • 2 = 0,928
0,928 • 2 = 1,856
0,856 • 2 = 1,712
0,712 • 2 = 1,424
0,424 • 2 = 0,848
0,848 • 2 = 1,696
0,696 • 2 = 1,392
0,392 • 2 = 0,784
и т. д.

Таким образом 0,11610 ≈ 0,00011101102

Получим: 206,11610 ≈ 11001110,00011101102

Применения [править]

В цифровых устройствах [править]

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

  • Чем меньше значений существует в системе, тем проще изготовить отдельные элементы, оперирующие этими значениями. В частности, две цифры двоичной системы счисления могут быть легко представлены многими физическими явлениями: есть ток (ток больше пороговой величины) — нет тока (ток меньше пороговой величины), индукция магнитного поля больше пороговой величины или нет (индукция магнитного поля меньше пороговой величины) и т. д.
  • Чем меньше количество состояний у элемента, тем выше помехоустойчивость и тем быстрее он может работать. Например, чтобы закодировать три состояния через величину напряжения, тока или индукции магнитного поля, потребуется ввести два пороговых значения и два компаратора, что не будет способствовать помехоустойчивости и надёжности хранения информации.[источник не указан 909 дней]
  • Двоичная арифметика является довольно простой. Простыми являются таблицы сложения и умножения — основных действий над числами.

В цифровой электронике одному двоичному разряду в двоичной системе счисления соответствует (очевидно) один двоичный разряд двоичного регистра, то есть двоичный триггер с двумя состояниями (0,1).

В английской системе мер [править]

При указании линейных размеров в дюймах по традиции используют двоичные дроби, а не десятичные, например: 5¾″, 715/16″, 311/32″ и т. д.

Интересные факты [править]

См. также [править]

Примеры чисел-степеней двойки [править]

Степень Значение
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536
17 131072
18 262144
19 524288
20 1048576
21 2097152
22 4194304
23 8388608
24 16777216
25 33554432
26 67108864
27 134217728
28 268435456
29 536870912
30 1073741824
31 2147483648
32 4294967296
33 8589934592
34 17179869184
35 34359738368
36 68719476736
37 137438953472
38 274877906944
39 549755813888
40 1099511627776
41 2199023255552
42 4398046511104
43 8796093022208
44 17592186044416
45 35184372088832
46 70368744177664
47 140737488355328
48 281474976710656
49 562949953421312
50 1125899906842624
51 2251799813685248

Примечания [править]

  1. Sanchez, Julio & Canton, Maria P. (2007), «Microcontroller programming: the microchip PIC», Boca Raton, Florida: CRC Press, с. 37, ISBN 0-8493-7189-9 
  2. W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X
  3. Ordish George, Hyams, Edward. The last of the Incas: the rise and fall of an American empire. — New York: Barnes & Noble, 1996. — С. 80. — ISBN 0-88029-595-3
  4. Experts 'decipher' Inca strings. Архивировано из первоисточника 18 августа 2011.
  5. Carlos Radicati di Primeglio, Gary Urton Estudios sobre los quipus. — P. 49.
  6. Dale Buckmaster (1974). «The Incan Quipu and the Jacobsen Hypothesis». Journal of Accounting Research 12 (1): 178-181. Проверено 2009-12-24.
  7. Bacon, Francis, «The Advancement of Learning», vol. 6, London, сс. Chapter 1, <http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html> 
  8. http://www.leibniz-translations.com/binary.htm Leibniz Translation.com EXPLANATION OF BINARY ARITHMETIC
  9. Aiton, Eric J. (1985), «Leibniz: A Biography», Taylor & Francis, сс. 245–8, ISBN 0-85274-470-6 

Ссылки [править]