Определение 1. Система счисления – это способ представления чисел и соответствующие ему правила действия над числами.
Определение 2. Место, которое занимает цифра в записи числа, по-другому называют разрядом. Разряды нумеруются (первый, второй, третий и так далее), или называются единицы, десятки, сотни…
Определение 3.Развернутой формой записи числа называется запись в виде Aq=±(an-1qn-1+an-2qn-2+…+a0q0+a-1q-1+a-2q-2+…+a-mq-m), где Aq – число, q – основание системы счисления, ai – цифры данной системы счисления, n – число разрядов целой части числа, m – число разрядов дробной части числа.
Перевод чисел в различные системы счисления
1. Для того чтобы перевести десятичное число в какую-либо систему счисления, необходимо выполнить последовательное деление данного числа и получаемых неполных частных на основание системы, в которую его требуется перевести, до тех пор пока не получим в неполное частное меньше делителя. Для записи числа в новой системе счисления, выписываются последнее частное и полученные остатки в направлении от последнего к первому.
Пример 2.1. Перевести из десятичной системы счисления в двоичную число 564.
Решение
0
и
л
и
564(10) =1000110100(2).
Ответ: 1000110100(2).
2. Если все слагаемые в развернутой форме недесятичного числа представить в десятичной форме и вычислить по правилам десятичной арифметики, то получится число в десятичной системе, равное данному. По этому принципу производится перевод из недесятичной системы в десятичную.
Пример 2.2. Перевести число 10011101(2) из двоичной системы счисления в десятичную.
3. Для того чтобы целое двоичное число записать в системе счисления с основанием 8 (16), нужно:
· данное двоичное число разбить справа налево на группы по 3 (4) цифры в каждой;
· если в последней группе окажется меньше разрядов, то её надо дополнить слева нулями до нужного числа разрядов;
· заменить каждую группу соответствующей цифрой в восьмеричной (шестнадцатеричной) системе счисления.
4. Для того чтобы произвольное число, записанное в системе счисления с основанием 8 (16) перевести в двоичную систему счисления, нужно каждую цифру этого числа заменить соответствующей триадой (тетрадой).
Таблицы соответствия цифрам тетрад и триад.
8-чная цифра
2-чная триада
16-чная цифра
2-чная тетрада
A
B
C
D
E
F
Пример 2.3. Перевести в шестнадцатеричную и восьмеричную систему счисления двоичное число.
Решение
011010011(2)=323(8).
11010011(2)=D3(16).
5. Для перевода в недесятичную систему счисления дробного десятичного числа необходимо выполнить последовательное умножение дробных частей исходного числа и получаемых чисел на основание новой системы, до тех пор пока не будет получено целое число. Затем записать полученные целые части в порядке их получения.
Пример 2.4. Перевести в двоичную систему счисления дробное десятичное число 15,1875(10).
Решение
15,1875(10)=1111,0011(2).
Пример 2.5. Перевести в десятичную систему счисления число 1216,04(8).
При сложении двух чисел в одной системе счисления используют правило столбика: числа записываются друг над другом, так чтобы места одинаковых разрядов совпадали.
Вычисления ведутся последовательно, начиная с самого наименьшего разряда. Суммирование ведется по правилам принятым в данной системе. При этом иногда производится перенос единицы в больший разряд.
Операцию умножения производят в два действия:
1) поразрядное умножение одного числа на цифру другого;
2) размещение полученных результатов в виде столбика со сдвигом разрядов до последующего сложения.
Удобно умножать поразрядно на то число, которое имеет меньше разрядов.
Деление в любой позиционной системе счисления производится по тем же правилам, как и деление углом в десятичной системе. В двоичной системе деление выполняется особенно просто, ведь очередная цифра частного может быть только нулем или единицей.
Таблица сложения в двоичной системе счисления
Таблица умножения в двоичной системе счисления
0+0=0
0·0=0
0+1=1
0·1=0
1+0=1
1·0=0
1+1=10
1·1=1
Таблица умножения
в восьмеричной
системе счисления
*
Таблица сложения
в восьмеричной
системе счисления
+
Таблица сложения
в шестнадцатеричной системе счисления
+
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
B
C
D
E
F
A
A
B
C
D
E
F
B
B
C
D
E
F
1A
C
C
D
E
F
1A
1B
D
D
E
F
1A
1B
1C
E
E
F
1A
1B
1C
1D
F
F
1A
1B
1C
1D
1E
Таблица умножения
в шестнадцатеричной системе счисления
*
A
B
C
D
E
F
A
B
C
D
E
F
A
C
E
1A
1C
1E
C
F
1B
1E
2A
2D
C
1C
2C
3C
A
F
1E
2D
3C
4B
C
1E
2A
3C
4E
5A
E
1C
2A
3F
4D
5B
1B
2D
3F
5A
6C
7E
A
A
1E
3C
5A
6E
8C
B
B
2C
4D
6E
8F
9A
A5
C
C
3C
6C
9C
A8
B4
D
D
1A
4E
5B
8F
9C
A9
B6
C3
E
E
1C
2A
7E
8C
9A
A8
B6
C4
D2
F
F
1E
2D
3C
4B
5A
A5
B4
C3
D2
E1
Пример 2.6. Найти сумму двоичных чисел 10000000100(2) и 111000010(2).
Решение
Сложение проще всего выполнять в столбик, записывая, как и в десятичной системе, разряды второго числа под соответствующими разрядами первого.
+
Пример 2.7. Найти разность двоичных чисел 10010110(2) и 1101011(2).
–
Пример 2.8. Найти сумму и разность восьмеричных чисел 215,48 и 73,68
+
5,
3,
3,
–
5,
3,
1,
Пример 2.9. Найти сумму и разность шестнадцатеричных чисел 27D,D8(16) и 191,2(16).
+
D,
D
1,
E,
F
–
D,
D
1,
E
C,
B
Пример 2.10. Найти произведение чисел 100111(2) и 1000111(2).
×
Пример 2.11. Найти произведение чисел 163(8) и 63(8).
×
+
Пример 2.12. Найти произведение чисел 61,A(16) и 40,D(16).
×
1,
A
0,
D
F
B
7,
Двоично-десятичная система
Пример 2.13. Перевести число –56,5(10) в двоично-десятичную систему.
Решение
Число имеет 3 цифры и знак «минус», следовательно, потребуется 3 двоичные тетрады для цифр и одна для знака. Причем, знаковая тетрада всегда записывается последней.
5 = 0101; 6 = 0110; “–“ = 1101 (“+”= 1100).
Окончательно получаем 01010110,01011101(2-10).
Пример 2.14. Перевести число 100000101101100(2-10) из двоично-десятичной системы в десятичную.
Решение
Разобьем данное число на тетрады, двигаясь справа налево, и заменим их соответствующими цифрами и знаком.
0100’0001’0110’1100(2-10) = 416(10).
Примечание: первая справа тетрада кода отводится на знак: 1100 = “+” или 1101 = “–“.
Прямой, обратный и дополнительный код
Примем сокращения для обозначения кодов: пр – прямой, об – обратный, доп – дополнительный.
Для получения прямого кода числа нужно дополнить слева двоичную запись таким количеством незначащих нулей, сколько требует заданный тип. Первая левая цифра кодирует знак числа: 0 – положительное, 1 – отрицательное. Кодовый разряд будем отделять точкой.
Пример 2.15. Представить в прямом, обратном и дополнительном кодах, форматах Integer (16 разрядов), Longint (32 разряда) числа.
а) 88(10).
Решение
1. Переведем данное число в двоичную систему счисления.
88(10) = 1011000(2).
2. Известно, что для положительного числа все три кода совпадают, то есть
[8810]пр = [8810]обр = [8810]доп = 0.000000001011000 – тип Integer;
[8810]пр = [8810]обр = [8810]доп = 0.0000000000000000000000001011000 – тип Longint.
б) – 45.
Решение
45(10) = 101101(2).
Запишем прямой код числа (– 45):
[– 4510]пр = 1.000000000101101 – тип Integer.
Для получения обратного кода инвертируем все цифры прямого кода, за исключением знакового разряда.
[– 4510]обр = 1.111111111010010 – тип Integer.
Прибавив к обратному коду 1, получим дополнительный код отрицательного числа.
[– 4510]доп = 1.111111111010011 – тип Integer.
Для типа Longint коды имеют вид:
[– 4510]пр = 1.0000000000000000000000000101101;
[– 4510]обр = 1.1111111111111111111111111010010;
[– 4510]доп = 1.1111111111111111111111111010011.
Выполним обратную задачу.
Пример 2.16. Записать число, соответствующее двоичному коду.
а) 0.000000000010110.
Решение
Так как в старшем разряде 0, то число положительное. Значит, прямой, обратный и дополнительный код совпадают. Отбросим незначащие нули и переведем оставшееся двоичное число в десятичную систему счисления.
101102 = 16 + 4 + 2 = 2210.
Ответ: 2210.
б) 1.111111111000000.
Решение
Так как в старшем разряде 1, то число отрицательное. Для получения числа из его кода применим алгоритм, обратный алгоритму получения кода.
1. Вычтем 1 из данного кода.
–
1.
1.
2. Инвертируем полученное число, оставив без изменения первый разряд: 1.000000001000000.
3. Отбросим все незначащие нули и переведем двоичное число в десятичную систему: 10000002 = 6410. С учетом знакового разряда, получаем число – 6410.
Ответ: – 6410.
Правила сложения и вычитания для двоичных кодов положительных и отрицательных чисел:
А – В = А + (–В)
–А + В = (–А) + В
–А – В = (–А) + (–В)
Пример 2.17. Представить в дополнительном коде в формате Integer числа 451 и 228 и выполнить их сложение и вычитание в соответствующих кодах.
Решение
1. Найдем дополнительные коды данных чисел. Так как оба числа положительны, то их дополнительные коды равны прямым.
[451]доп = 0.000000111000011;
[228]доп = 0.000000011100100.
2. Выполним сложение дополнительных кодов по обычным правилам сложения двоичных чисел.
+
0.
0.
0.
3. Найдем разность 451 – 228.
Для отыскания разности кодов воспользуемся правилом замены разности суммой: А–В=А+(–В). Тогда получаем 451 – 228 = 451 + (–228). Видим, что нам понадобится найти дополнительный код числа –228.
[–228]доп = 1.111111100011100.
Выполним сложение:
+
0.
1.
0.
Ответ: код суммы – 0.000001010100111;
код разности – 0.000000011011111.
Нормализованный код
Рассмотрим представление дробного числа в четырехбайтовой ячейке памяти. Это число типа Single. В ячейке должна содержаться следующая информация: код знака числа, машинный порядок и мантисса.
В старшем разряде первого байта хранится машинный порядок. 2, 3, 4 байты отводятся под мантиссу.
Связь между машинным порядком и математическим выражается формулой
Мр1 = р + 64 или Мр2 = р2 + 10000002.
Пример 2.18. Записать код действительного числа 250,1875, интерпретируя его как величину типа Single.
Решение
1. Переведем число в двоичную систему счисления с 24 значащими цифрами.
Недостающие до 24 разрядов дополним нулями справа:
250,187510=11111010,00110000000000002.
2. Запишем в форме нормализованного двоичного числа с плавающей точкой:
0,111110100011000000000000·28 или 0,111110100011000000000000·101000.
3. Вычислим машинный порядок в двоичной системе счисления:
М p2 = 1000 + 1000000 = 1001000.
4. Запишем код числа в четырехбайтовой ячейке памяти с учетом его знака:
1111’1010’0011’0000’0000’0000
23 0
5. В шестнадцатеричной системе счисления полученный код примет вид 48FA3000.