
КОДИРОВАНИЕ ЧИСЕЛ
Формы и форматы представления данных в компьютере.
Каждый разряд (цифра) двоичного числа представляется в компьютерах физическим элементом, обладающим двумя устойчивыми состояниями, одному из которых приписывается значение 0, а другому 1. Совокупность определенного количества этих элементов служит для представления многоразрядных двоичных чисел и составляет разрядную сетку или формат представления числовых данных.
В компьютерах, как и в математике, используется как естественная, так и нормальная формы записи чисел. Каждая из форм имеет определенные форматы для каждого типа компьютеров, составленные из целого количества байт. Длину формата данных измеряют в машинных словах или в количестве двоичных разрядов (бит). Так, для ПК слово - 2 байта, двойное слово - 4 байта.
Машинное полуслово для ПК |
|||||||
старший разряд |
6 |
5 |
4 |
3 |
2 |
1 |
младший разряд |
Естественная форма.
Естественную форму обычно называют представлением чисел с фиксированной запятой или точкой, положение которой строго устанавливается для правильных дробей - перед старшим разрядом, для смешанных дробей - в определенном месте, отделяющим целую и дробные части числа, для целых чисел - после младшего разряда.
В современных компьютерах естественная форма используется в основном для представления целых чисел.
Во всех форматах знак числа занимает место перед старшим разрядом и кодируется.
Достоинством естественной формы является простота и наглядность представления чисел, простота реализации алгоритмов операций, а следовательно, простота устройств и высокая степень выполнения операций.
Недостаток - ограниченный диапазон представления величин. Если результаты вычислений выходят за допустимые пределы, происходит переполнение разрядной сетки, что искажает результат. В машинах при этом вырабатывается запрос на прерывание или происходит автоматический переход к представлению данных в нормальной форме.
знак |
214 |
213 |
212 |
211 |
210 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
0 - знак "плюс"
1 - знак "минус"
Знак от числа отделяется воображаемой точкой.
Оценим диапазон представления чисел в коротком формате - 2 байта.
|A|min = 1
|A|max = 215-1 = 32767
Нормальная форма.
Любое число в нормальной форме представляется в виде:
A = mAq PA
mA - мантисса числа A
q - основание системы счисления
PA - порядок
Мантисса числа должна удовлетворять условию: 1/q <= |m|<=1.
55,25 - естественная форма
5525*10-2 - степенная форма
0,005525*104 - степенная форма
0,5525*102 - нормальная форма
Как видно из записи числа, мантисса и порядок имеют знаки, поэтому в формате следует отвести два разряда под знаки, что уменьшит диапазон представления чисел. Поэтому в компьютерах не используют короткую форму записи чисел (2 байта), а пользуются представлением в 4 и 8-байтных форматах.
Обычно 7 разрядов используется под порядок и его знак. Числовая ось порядков находится в диапазоне -64<=P<=63. Для исключения отрицательных порядков используют смещение оси в область положительных значений, т.е. +64. Такой смещенный порядок называется характеристикой Px = P + 4016 (шестнадцатеричное представление предпочтительнее, т.к. упрощает действия над такими числами)
Таким образом Px=40 - это P = 0, а диапазон 0 <= Px <=127=7F.
Пример записи числа в нормальной форме.
A = 7D08,816
B = -7D08,816
mA = 0,7D088 PxA = 40+4 = 44
mB = -0,7D088 PxB = 40+4 = 44
A = 0 100 0100 0111 1101 0000 1000 1000 0000 A = 44D0880 > 0
B = 1 100 0100 0111 1101 0000 1000 1000 0000 B = C4D0880 < 0
Итак, мы определились с представлением чисел в естественной и нормальной форме и даже знаем теперь, как записываются отрицательные числа. Но если мы попытаемся произвести арифметические действия с такими числами, а особенно операцию вычитания, то получим заведомо ложный результат. И это полбеды, потому что компьютер, к сожалению, умеет выполнять только две операции:
Арифметическое сложение.
Сдвиг кода числа вправо и влево.
Машинные коды чисел целых чисел.
Замена операции вычитания на операцию сложения возможна в компьютере благодаря использованию машинных кодов: прямому, обратному и дополнительному.
Заметим сразу, что целые числа хранятся и обрабатываются в компьютере только в дополнительном коде.
Правила образования машинных кодов.
Прямой код положительного и отрицательного чисел отличаются только знаковыми разрядами, модуль числа не изменяется.
Положительное число в прямом, обратном и дополнительных кодах имеет одинаковое изображение.
Обратный код отрицательного двоичного числа образуется из прямого кода положительного числа путем замены всех единиц на нули, а нулей на единицы, включая знаковый разряд.
Дополнительный код отрицательного числа образуется путем добавления единицы к младшему разряду обратного кода этого же числа.
Рассмотрим образование кодов в двоичной системе счисления чисел ±34.
А = 3410 = 1000102
В = -3410 = -1000102
Для простоты примем, что задана разрядная сетка в один байт (8 двоичных разрядов).
|
34 |
-34 |
ПК |
00100010 |
10100010 |
ОК |
11011101 |
|
ДК |
11011110 |
Вспомним таблицу сложения для двоичных чисел:
+ |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
10 |
Обратите внимание, что при сложении 1+1 образуется единица переноса в старший разряд. При сложении могут возникнуть и другие ситуации, например:
1+1+1 - единица остается в текущем разряде и образуется единица переноса;
1+1+1+1 - ноль в текущем, две единицы в переносе;
1+1+1+1+1 - единица в текущем, две единицы в переносе;
1+1+...+1 - (N-количество слагаемых) если N-четное, то в текущем разряде ноль, в переносе N/2 единиц, если N-нечетное, то единица в текущем, целая часть от N/2 единиц в переносе.
Существует и другой способ образования машинных кодов, который вытекает из определения дополнительного кода отрицательного числа. Дополнительный код представляется как дополнение к некоторой константе. Таким образом можно получить дополнительный код отрицательного числа, минуя образование обратного кода.
Рассмотрим это на примере с числом -34.
А = -3410 = - 1000102
Прямой код положительного числа - 00100010
Константа для дополнительного кода - 100000000