Лабораторная работа: Системы счисления и представления типов данных
Пример . Десятичное число А10 = 4718,63 в развернутой форме запишется так:
А10 = 4·103 + 7·102 + 1·101 + 8·100 + 6·10-1 + 3·10-2
Двоичное число А2 = 1001,1 = 1·23 + 0·22 + 0·21 + 1·20 + 1·2-1
Восьмеричное число А8 = 7764,1 = 7·83 + 7·82 + 6·81 + 4·80 + 1·8-1
Шестнадцатеричное число А16 = 3АF16 = 3·162 + 10·161 + 15·160
2. Переходы между основными системами счисления
Основные СС имеют основания 2, 8,10, 16. Системы с основаниями 2, 8 и 16 являются родственными, так как их основания являются степенями двойки. Переходы между ними реализуются легко.
2 ® 8. Двоичное число разбивается справа налево на триады (тройки цифр) и каждая триада заменяется на 8‑ичную цифру.
2 ® 16. Двоичное число разбивается справа налево на тетрады (четверки цифр) и каждая тетрада заменяется на 16‑ичную цифру.
8 ® 16 и 16 ® 8. Преобразование идет через двоичную СС.
Любое основание ® 10. Осуществляется по определению позиционной системы счисления.
10 ® 16. Имеется два способа преобразования.
1. Метод деления «уголком» строит результирующее 16‑ичное число от младших цифр к старшим. Для этого запоминаются целые остатки от деления исходного числа на 16, пока частное не станет равным 0. Записывая эти остатки в обратном порядке, получим ответ.
2. Метод «вычерпывания» состоит из нескольких итераций. На каждой итерации исходное число х оценивается снизу максимальной степенью m нового основания p= 16: х ≥ 16m . Затем определяем число r вхождений степени 16m в число х. Наконец, 16‑ичную цифру r записываем в результирующее число в разряд с номером m. Число x заменяем на меньшее число х – r · 16m . Если новое число х = 0, то алгоритм заканчивается, и остальные разряды результата заполняем нулями. В противном случае, переходим к следующей итерации.
3. Основные 16‑ичные константы
Большинство числовых констант, которые встречаются в компьютерной технике, являются круглыми шестнадцатеричными числами. Эти числа обычно записывают в десятично-буквенном виде, имеющем формат ab, где а – десятичное число, b – буква.
Таблица 1.Шестнадцатеричные константы
16‑ичная константа | Десятично-буквенное значение | Примечания |
0х10 | 24 = 16 | Размер параграфа |
0х100 | 28 = 256 | Размер физического сектора |
0х200 | 512 | Размер кластера на дискете |
0х400 | 210 = 1024 = К | Килобайт |
0х1000 | 4 К | |
0х10000 | 64 К | Размер сегмента |
0хА0000 | 640 К | Верхняя граница ОЗУ для размещения исполняемого кода в DOS |
0х100000 | 220 = М | Мегабайт |
Следующая таблица содержит популярные степени числа 2, а также их русские и английские названия.
Таблица 2. Степени числа 2
Показатель степени | Степень | Примечания |
0 | 1 | |
1 | 2 | |
2 | 4 | |
3 | 8 | |
4 | 16 | |
5 | 32 | |
6 | 64 | |
7 | 128 | |
8 | 256 | |
9 | 512 | |
10 | К = 1024 » 103 , К | Килобайт, Kilobyte |
20 | М = К·К = К2 » 106 , М | Мегабайт, Megabyte |
30 | Г = К3 » 109 , G | Гигабайт, Gigabyte |
40 | Т = К4 = М2 » 1012 , T | Терабайт, Terabyte |
50 | П » 1015 , P | Петабайт, Petabyte |
60 | Э » 1018 , E | Экзабайт, Exabyte |
70 | З » 1021 , Z | Зетабайт, Zettabyte |
80 | Й » 1024 , Y | Йотабайт, Yottabyte |
Последние строки кратных единиц были дополнены ГОСТом в 1991. Вычисления с числами, представленными в десятично-буквенном виде, можно осуществлять без перехода в десятичную СС. Например, 32 Т / 256 К = 245 / 218 = 227 = 128 М.
Таблицы 1 и 2 позволяют переводить 16‑ичные числа в десятично-буквенную запись без применения вычислительных средств. Например,
0х7D8A30 = 7·0x100000 + 13·0x10000 + 8·0x1000 + 10·0x100 + 3·16 = 7 M + 13·64 K + 8·4 K + 10·(K/4) + 48 = 7 M + 866,5 K + 48.
Отметим, что для десятично-буквенных чисел не выполняется дистрибутивный закон, то есть 1 М + 100 К не равен 1,1 М.
4. Реализация целочисленных операций
Представление чисел в компьютере осуществляется в двоичной СС. Однако для краткости записи чисел используют родственную 16‑ичную СС.
Определение 1 . Логическим адресом ячейки памяти в ОЗУ с 20‑битной адресной шиной называется запись xxxx:yyyy, где хххх – шестнадцатеричный сегментный адрес, yyyy – шестнадцатеричное смещение. Физическим адресом этой ячейки называется число xxxx0 + yyyy.
Пример . Область кода программы расположена с ячейки 55А3:3000 по ячейку 9EEF:A0FF. Оценить размер области в килобайтах.
Решение . Физический адрес начала области 0х55А30 + 0х3000 = 0х58A30, конца области 0х9EEF0 + 0хA0FF = 0хA8FEF. Размер этой области равен 0хA8FEF– 0х58A30 + 1 = 0x505C0 = 5·64 К + 0·4 К + 10· (К/4) + 12·16= (320 + 2,5) К + 192 = 322,5 К + 192.
Определение 2 . Нормализованным адресом ячейки памяти ОЗУ с 20‑битной адресной шиной называется запись xxxx:yyyy, где хххх – шестнадцатеричное число, yyyy – шестнадцатеричное смещение, не превосходящее размера параграфа, то есть из диапазона от 0 до 15.
Арифметические операции сложения, вычитания, умножения и деления с 16‑ичными числами осуществляются аналогично 10‑ичным числам, то есть «столбиком». Однако, имеются некоторые отличия.
Пример . Критерии деления 16‑ичного целого числа на 3 и на 5 выглядят одинаково: сумма цифр должна делится, соответственно, на 3 и на 5.
Пример . Оказывается в 16‑ичной СС 0x112 = 0x121, 0x122 = 0x144, 0x132 = 0x169.
Пример . Десятичное число 0,1 нельзя представить в виде конечной 2‑ичной дроби A= 0, a-1 …a- m = a-1 2-1 + a-2 2-2 +… + a- m 2- m . В противном случае, умножая равенство 0,1 = А на 10·2m , получим 2m = 10·(a-1 2m -1 +
a-2 2m -2 +… + a- m 20 ). Последнее равенство невозможно, так как правая часть делится на 5, а левая – нет.