Теоретическая Информатика
.pdf§ 2. Двоичная система счисления |
45 |
§2. Двоичная система счисления
1.Определение двоичной системы счисления
1°. О с н о в н ы е с в е д е н и я
Двоичная система счисления — позиционная система счис-
ления, состоящая только из двух цифр 0 и 1.
Двоичное число — число, записанное двоичными цифрами. Это самая простая система счисления с минимальным ос-
нованием 2. Она используется в компьютерах по причинам:
1)простота аппаратной реализации: 1 — есть сигнал, 0 — нет;
2)самое сложное действие таблицы умножения — это 12 × 12 = 12, таблицы сложения — 12 + 12 = 102.
Итак, число 10 в разных системах счисления имеет разное
количественное значение. Для различения таких значений основание системы пишется после числа в виде нижнего ин- декса. Этот индекс всегда находится в десятичной системе. Ин- декс можно опускать при очевидном контексте.
Приведем таблицы умножения, сложения и вычитания двоичных чисел. Видно, что таблица сложения сложнее таб- лицы умножения; возможно, слово «сложение» происходит от «сложный».
Т а б л и ц а 1 . 8
Таблица умножения двоичных чисел
× 0 1
0 0 0
1 0 1
Т а б л и ц а 1 . 9
Таблицы сложения и вычитания двоичных чисел
+ |
0 |
1 |
0 |
− 0 |
= 0 |
|||
|
|
|
1 |
− |
0 |
= |
1 |
|
0 |
0 |
1 |
||||||
1 |
− |
1 |
= |
0 |
||||
|
1 |
102 |
||||||
1 |
102 |
− 1 = 1 |
||||||
|
|
|
|
|
|
|
|
46 Глава 1. Числа
Выпишем первые натуральные двоичные числа от 0 до 16. Это можно сделать, используя следующее правило.
Основное свойство натуральных чисел: следующее натураль-
ное число больше предыдущего на 1.
Применяя это свойство, получаем (только все время нужно помнить, что 12 + 12 = 102): 12 + 12 = 102 («десять»), 102 + 12 = 112
(«одиннадцать»), 112 + 12 = 1002 |
(«сто») (рис. 1.10). |
|
|
1 |
|
|
1 1 |
1 |
102 |
|
112 |
+ 1 |
+ 1 |
+ |
1 |
102 |
112 |
|
1002 |
а |
б |
|
в |
Рис. 1.10. Вычисление первых двоичных чисел |
|
|
|
|
Т а б л и ц а 1 . 1 1 |
|
Первые натуральные двоичные числа от 0 до 16 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Десятичное |
Двоичное |
Десятичное |
Двоичное |
|
|
число |
число |
число |
число |
|
|
|
|
|
|
|
0 |
0 |
8 |
10002 |
|
|
1 |
1 |
9 |
10012 |
|
|
2 |
102 |
1010 |
10102 |
|
|
3 |
112 |
1110 |
10112 |
|
|
4 |
1002 |
12 |
11002 |
|
|
5 |
1012 |
13 |
11012 |
|
|
6 |
1102 |
14 |
11102 |
|
|
7 |
1112 |
15 |
11112 |
|
|
|
|
|
16 |
100002 |
|
|
|
|
|
|
|
Неудобно, но приходится называть двоичное число на русском языке по аналогии с десятичным, хотя такое название не соответствует количественному значению двоичного числа. Например, двоичное число 102 «де- сять» обозначает два предмета, а двоичное число 112 «одиннадцать» — три предмета.
§ 2. Двоичная система счисления |
47 |
При внимательном изучении табл. 1.11 получаем, что име- ется:
1)только 2 однозначных двоичных числа 0 и 1;
2)4 = 22 двузначных двоичных числа: 00, 01, 102 и 112;
3)8 = 23 трехзначных двоичных чисел от 000 до 1112;
4)16 = 24 четырехзначных двоичных чисел от 0000 до 11112. Рассуждая по аналогии и учитывая подобный опыт подсче-
та количества таких чисел для десятичной системы (табл. 1.7), получим табл. 1.12 (все числа в которой записаны в десятич- ной системе).
Т а б л и ц а 1 . 1 2
Количество однозначных, двузначных и т. д. до десятизначных двоичных чисел
Разрядность |
Количество двоичных чисел |
|
двоичных чисел |
с такой разрядностью |
|
1 |
2 |
= 21 |
2 |
4 |
= 22 |
3 |
8 |
= 23 |
4 |
16 |
= 24 |
5 |
32 |
= 25 |
6 |
64 |
= 26 |
7 |
128 |
= 27 |
8 |
256 |
= 28 |
9 |
512 |
= 29 |
10 |
1024 |
= 210 |
|
|
|
Однозначными двоичными числами можно пронумеровать от 1 до 2 объектов, двузначными — от 1 до 4, трехзначными —
1—8 и т. д.
Значащие цифры в двоичной системе имеют те же свойст- ва, что и в десятичной. Например, значащими цифрами числа
00110,0110100 являются цифры 1100110100.
48 |
Глава 1. Числа |
2°. О п е р а ц и и |
н а д д в о и ч н ы м и ч и с л а м и |
Рассмотрим четыре элементарные арифметические опера- ции над целыми двоичными числами.
Операции над двоичными числами производятся точно так же, как и над десятичными числами.
При проведении операций над двоичными числами, как и в случае операций над десятичными числами, удобно произ- водить операции столбиком. При этом следует учитывать, что
12 + 12 = 102, 12 + 12 + 12 = 112, а 102 − 12 = 12.
1. Двоичные числа складываются столбиком точно так же, как и десятичные. На рис. 1.13 показано сложение двух пар двоичных чисел: 1100102 (=50) и 1101112 (=55), 1101112 (=55) и 1110112 (=59).
Когда при сложении текущих разрядов двух чисел в дво- ичной системе получается 102 или 112, то 1 переходит в сле- дующий разряд.
1 1 |
1 1 |
1 1 1 1 1 1 |
110010 |
110111 |
|
+ 110111 |
+ 111011 |
|
1101001 |
1110010 |
|
|
а |
б |
Рис. 1.13. Сложение двоичных чисел:
а) 1100102 + 1101112 = 11010012 (50 + 55 = 105); б) 1101112 + 1110112 = 11100102 (55 + 59 = 114)
2. При вычитании следует помнить, что уменьшаемое не должно быть меньше вычитаемого. Если уменьшаемое меньше вычитаемого, то разность переворачивается, а результат ум- ножается на −1.
Двоичные числа вычитаются столбиком точно так же, как и десятичные. На рис. 1.14 показано вычитание двух пар двоич-
ных чисел: 11001102 (=102) и 10012 (=9), 1011112 (=47) и 111000002 (=224).
При вычитании в двоичной системе если из 0 вычитается 1, то этот 0 в вычитаемом становится 102, ближайшая слева 1 ста- новится 0, а все нули между ними становятся 1.
§ 2. Двоичная система счисления |
49 |
|
|
|
0 10 |
1 1 10 |
0 10 |
0 1 1 1 1 10 |
1100110 |
11100000 |
|
- 1001 |
- 101111 |
|
1011101 |
10110001 |
|
|
а |
б |
Рис. 1.14. Вычитание двоичных чисел:
а) 11001102 − 10012 = 10111012 (102 − 9 = 93); б) 1011112 − 111000002 = −101100012 (47 − 224 = −177)
3. Двоичные числа умножаются столбиком точно так же, как и десятичные. На рис. 1.15 показано умножение двух пар двоичных чисел: 100012 (=17) и 10112 (=11); 1010012 (=41) и 11010002 (=104).
Становится очевидным, что самое сложное в умножении двоичных чисел — сложение нескольких чисел, равных первому сомножителю, цифры которого просто сдвинуты по разрядам влево.
|
10001 |
|
|
101001 |
× |
1011 |
|
× |
1101000 |
|
10001 |
|
|
101001 |
|
10001 |
|
|
101001 |
+ 10001 |
|
+ 101001 |
||
|
10111011 |
|
|
1000010101000 |
|
а |
|
б |
Рис. 1.15. Умножение двоичных чисел:
а) 100012 × 10112 = 101110112 (17 × 11 = 187); б) 1010012 × 11010002 = 10000101010002 (41 × 104 = 4264)
4. Двоичные числа делятся столбиком точно так же, как и десятичные. На рис. 1.16 показано деление двух пар двоичных чисел: 1001002 (=36) и 112 (=3); 100011112 (=143) и 11012 (=13).
Самое сложное в этом процессе — вычитание двух чисел, причем это вычитание сильно упрощается тем, что вычитается всегда делитель. Таким образом, двоичное деление может быть проще двоичного умножения.
50 |
|
|
|
|
|
|
|
|
|
Глава 1. Числа |
|
|
|
|
|
|
10001111│1101 |
||||
|
100100│11 |
1101 |
|
|
1011 |
|||||
|
11 |
|
1100 |
|
|
|
|
|
|
|
|
|
10011 |
|
|
||||||
11 |
|
|
1101 |
|
|
|||||
|
11 |
|
1101 |
|
||||||
0 |
|
1101 |
|
|||||||
|
|
|
|
|
0 |
|
||||
|
|
|
а |
|
|
|
|
|
б |
|
Рис. 1.16. Деление двоичных чисел:
а) 1001002 : 112 = 11002 (36 : 3 = 12); б) 100011112 : 11012 = 10112 (143 : 13 = 11)
3°. У п р а ж н е н и я
1.Составьте таблицу с десятичными и двоичными числами от 0 до 32. Используйте ее для перевода чисел.
2.К одной телефонной станции подключено 100 номеров, к другой — 1000. Одной компьютерной программе доступны 5000 ячеек памяти, другой — 8000. Двоичными числами какой минимальной длины можно закодировать эти номера и ячейки?
4.Вычислите в двоичной системе счисления.
а. 111012 + 100012; 110112 + 100112; 101112 + 101112; 111112 + 101112.
б. 111002 − 100012; 110102 − 100112; 101102 − 101112; 111102 − 101112.
в. 111012 100012; 110112 100112; 101112 101112; 111112 101112.
г. 110112/112; 110012/1012; 11111102/1102; 1111112/10012.
§ 2. Двоичная система счисления |
51 |
2. Перевод двоичных чисел в десятичные и обратно
1°. П е р е в о д д в о и ч н ы х ч и с е л в д е с я т и ч н ы е Будем заниматься переводом только натуральных чисел. Как было сказано выше, любое натуральное число можно
разложить единственным образом по степеням десятки с ко- эффициентами, принимающими значение от 0 до 9.
Точно так же любое натуральное число M > 0 можно разло- жить единственным образом по степеням двойки:
M = A0 + A2 22 +K+ AN−2 2N−2 + AN−1 2N−1 , AN−1 = 1.
Равенство AN −1 = 1 означает, что все степени двойки со степе-
нями, большими или равными N, равны 0. Остальные коэф- фициенты разложения A0 , A1 , K, AN −2 равны либо 0, либо 1.
Нуль является исключением: все его коэффициенты равны нулю: 0 = 0.
Примеры.
а. 1 = 20. б. 2 = 21.
в. 3 = 20 + 21.
г. 4 = 22.
Это разложение по степеням двойки и положено в основу перевода двоичных чисел в десятичные и обратно.
Кроме того, любое натуральное число M можно записать в двоичной системе счисления, причем двоичные цифры совпа- дают с коэффициентами разложения числа M по степеням двойки, но расположены в обратном порядке по сравнению с предыдущей формулой:
M = AN−1AN−2 KA1A0 2 , AN−1 = 1.
Равенство AN −1 = 1, как и прежде, означает, что старший раз-
ряд числа равен 1. Остальные N − 1 цифры A0 , A1 , K, AN −2 рав-
ны либо 0, либо 1.
Объединяя две последние формулы, получаем самый из- вестный и простой алгоритм перевода двоичных чисел в деся- тичные.
52 Глава 1. Числа
А л г о р и т м 1 . 1 7 . П е р е в о д д в о и ч н о г о ч и с л а в д е с я т и ч н о е .
N-значное двоичное число переводится в десятичное по следующей формуле:
AN−1AN−2 KA1A0 2 = A0 + A1 21 +K+ AN−2 2N−2 + AN−1 2N−1 , AN−1 = 1,
где все числа в правой части равенства записаны в десятичной системе.
Примеры.
а. 100102 = 0 + 1 2 + 0 4 + 0 8 + 1 16 = 18. б. 110102 = 0 + 1 2 + 0 + 1 8 + 1 16 = 26. в. 1000102 = 1 2 + 1 32 = 34.
г. 1010102 = 2 + 8 + 32 = 42.
Несмотря на то, что это самый простой из всех алгоритмов перевода между двоичными и десятичными числами, четвер- тый пример показывает, что алгоритм 1.17 можно немного уп- ростить.
А л г о р и т м 1 . 1 8 . У п р о щ е н н ы й п е р е в о д д в о - и ч н ы х ч и с е л в д е с я т и ч н ы е .
Для перевода двоичного числа в десятичное нужно просто сложить двойки, возведенные в степени, равные разрядам не- нулевых двоичных цифр этого числа.
Примеры.
а. 1 0 1 2 = 20 + 22 = 1 + 4 = 5.
2 1 0
б. 1 1 0 0 1 1 2 = 20 + 21 + 24 + 25 = 1 + 2 + 16 + 32 = 51.
5 4 3 2 1 0
Этот перевод можно сделать еще проще, если приписывать снизу не степень двойки, а сразу двойку в соответствующей степени.
Примеры.
а. 1 1 0 2 = 4 + 2 = 6.
4 2 1
б. 1 1 0 1 1 0 2 = 32 + 16 + 4 + 2 = 54.
32 16 8 4 2 1
§ 2. Двоичная система счисления |
53 |
2°. П е р е в о д д е с я т и ч н ы х ч и с е л в д в о и ч н ы е Приведенное в п. 1° разложение произвольного натураль-
ного числа M > 0 по степеням двойки
M = A0 + A1 21 + A2 22 +K+ AN−2 2N−2 + 2N−1
позволяет также по числу M вычислить коэффициенты разло- жения A0 , A1 , K, AN −2 и максимальную ненулевую степень
двойки N − 1.
Заметим, что, поскольку формулу можно переписать в виде
M = A0 + 2(A1 + A2 21 +K+ AN−2 2N−3 + 2N−2 ),
то при делении числа M на 2 остаток равен A0 , а частное равно
A1 + A2 21 +K+ AN−2 2N−3 + 2N−2 = A1 + 2(A2 +K+ AN−2 2N−4 + 2N−3 ).
Тогда при делении этого частного на 2 остаток равен A1 , и т. д.:
коэффициент A0 равен остатку от делении M на 21 ;
коэффициент A1 равен остатку от делении M на 22 ;
…
коэффициент AN −1 равен всегда 1: остатку от делении M на 2N.
Другими словами, коэффициент AI в разложении произ-
вольного числа M по степеням двойки равен остатку от деле- ния произвольного числа M на два в степени I + 1. Здесь I — это индекс, пробегающий значения от 0 до N − 1, где N − 1 — это максимальная степень двойки, не превышающая исходного
числа M:
2N −1 M < 2N.
Вспоминая, что коэффициенты разложения числа M по степеням двойки являются также цифрами его двоичного представления:
M = AN−1AN−2 KA2A1A0 2 ,
получаем алгоритм перевода десятичного числа в двоичное. Алгоритм прост, поскольку деление производится в хорошо знакомой десятичной системе.
54 |
Глава 1. Числа |
|
А л г о р и т м 1 . 1 9 . П е р е в о д д е с я т и ч н о г о ч и с л а |
вд в о и ч н о е .
1.Число в десятичной системе делится на 2. Частное снова делится на 2. И т. д. Остатки от деления — цифры 0 и 1 — яв- ляются цифрами соответствующего двоичного числа, запи-
санными справа налево.
2.Процесс деления прекращается, когда частное становится равным нулю.
Примеры перевода чисел из десятичной системы в двоич- ную представлены на рис. 1.20.
20│2 |
|
|
|
30│2 |
|
|
|
20 10│2 |
|
|
|
30 15│2 |
|
|
|
0 10 5│2 |
|
|
0 14 7│2 |
|
|
||
0 4 |
2│2 |
|
1 6 |
3│2 |
|
||
1 |
2 |
1│2 |
1 |
2 |
1│2 |
||
|
0 |
0 |
0 |
|
1 |
0 |
0 |
|
|
1 |
|
|
|
1 |
|
а |
|
|
|
б |
|
|
|
Рис. 1.20. Перевод десятичных чисел в двоичные:
а) 20 = 101002; б) 30 = 111102
Предыдущий алгоритм 1.19 перевода десятичных чисел в двоичные еще называют алгоритмом справа налево, поскольку цифры двоичного числа получаются, начиная с младшего разряда.
Рассмотрим теперь алгоритм перевода десятичных чисел в двоичные слева направо, в котором цифры двоичного числа находятся, начиная со старшего разряда.
Снова воспользуемся разложением произвольного нату- рального числа M > 0 по степеням двойки
M= A0 + A1 21 +K+ AN−2 2N−2 + 2N−1
итем фактом, что имеется показатель степени N такой, что
2N −1 M < 2N.