ГЛАВА 7. ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В ЯЧЕЙКАХ ПАМЯТИ
 
 
 
   

ВВЕДЕНИЕ

 
 
 
 
 1.
 
Память компьютера удобно представлять состоящей из большого количества (сотни тысяч и миллионы) одинаковых ячеек, каждая из которых предназначена для хранения одного числа. Все ячейки пронумерованы, номер ячейки называется ее адресом; по этому адресу выполняется обращение к любой ячейке памяти. Одновременно выполняется обращение только к одной ячейке, поэтому обращение к нескольким ячейкам выполняют последовательно. Ячейка памяти работает в трех режимах: хранение (основной), запись (новой информации) и чтение (для передачи в другие устройства). Чтение происходит с сохранением информации в ячейке, при записи предыдущее содержимое ячейки исчезает.  
 
 
 2.
 
Ячейка памяти состоит из двоичных элементов памяти, поэтому позволяет записывать и хранить информацию, которая может быть представлена в форме двоичного r-разрядного слова. В частности, возможна запись в ячейку восьмеричных, шестнадцатеричных или десятичных чисел при условии кодирования (представления) цифр этих чисел соответствующими двоичными эквивалентами. При этом восьмеричные цифры заменяются двоичными триадами, шестнадцатеричные или десятичные - тетрадами.  
 
 
 3.
 
Типичные значения разрядности ячейки r - 8, 16, 32. Минимально адресуемая единица данных называется байтом. Пусть байт - двоичное слово длиной 8 бит.  
 
 
 4.
 
На рисунке показано размещение числа 945910 в шестнадцатиразрядной ячейке памяти (r = 16) в форме целого числа без знака в различных системах счисления. Из сравнения а, б, в видно, что внутреннее представление двоичного числа и двоично-кодированных восьмеричного и шестнадцатеричного совершенно совпадают.

r = 16, A - целое число без знака

а. A2 = 001 001 001 111 001 1
  001 001 001 111 001 1

б. A8 =0 2 2 3 6 3
 0 010 010 011 110 011
 0 2 2 3 6 3

в. A16 = 2 4 F 3
  0010 0100 1111 0011
  2 4 F 3

г. A10 = 9 4 5 9
  1011 0100 0101 1001
  9 4 5 9
 
 
 
 5.
 
Обратим внимание на то, что по внешнему виду числа в ячейке памяти невозможно определить, что в ней записано. Для дешифровки (раскодирования) необходима дополнительная информация. Для примера на рисунке - это основание системы счисления, положение запятой.  
 
 
 
   

ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ

 
 
 
 
 6.
 
Число 0,00234 можно записать так: 234 · 10-5, или 0,002 (с округлением), или 2,34 · 10-3 и т.д. Разнообразие форм в записи одного числа может послужить причиной затруднений для работы компьютера.

Во избежание этого нужно либо создать специальные алгоритмы "узнавания" числа, либо указывать каждый раз форму его записи. Очевидно, второй путь проще.  

 
 
 7.
 
Существует две формы записи чисел: естественная и нормальная. При естественной форме число записывается в естественном, натуральном виде, например, 12560 - целое число; 0,0035 - правильная дробь; 4,67 - неправильная дробь. При нормальной форме запись одного числа может принимать разный вид в зависимости от ограничений, накладываемых на ее форму. Например, число 12560 можно записать так: 12560 = 1,256 · 104 = 0,1256 · 105 = 125600 · 10-1 и т. д.  
 
 
 8.
 
Машинное изображение числа - представление числа Aq в разрядной сетке ЭВМ (в ячейке памяти). Условно обозначим машинное изображение числа символом [A]. Тогда справедливо соотношение
A = [ A ] · KA (7.1)

где KA - коэффициент, величина которого зависит от формы представления числа в ЭВМ.  
 

 
 
   

ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ФИКСИРОВАННОЙ ТОЧКОЙ

 
 
 
 
 9.
 
Естественная форма представления числа в ЭВМ характеризуется тем, что положение его разрядов в машинном изображении остается всегда постоянным независимо от величины самого числа. Другое название этой формы - представление с фиксированной точкой - ФТ (запятой) (имеется в виду запятая, отделяющая целую часть от дробной).  
 
 
 10.
 
Чтобы упростить функционирование компьютера, необходимо ограничить входную информацию какой-то одной областью чисел, что позволит определить KA. Например, если на вход вычислительной машины поступают только правильные дроби, то
-1 < [A]ф < 1 , (7.2)

где [A]ф - машинное изображение числа с ФТ.

Тогда число А будет представлено в виде A = [A]ф · KA.  

 
 
 11.
 
Величина KA определяет тот факт, что в машинном изображении точка (запятая) всегда стоит перед старшим разрядом дроби. Следовательно, можно хранить только дробную часть числа, а в разряде целой части писать дополнительную информацию.  
 
 
 12.
 
Так как числа бывают положительные и отрицательные, то формат (разрядная сетка) машинного изображения разбивается на знаковую часть и поле числа (рис. 7.1).

Рис. 7.1. Представление чисел с ФТ (правильные дроби)

В знаковую часть записывается информация о знаке. Примем, что знак положительного числа "+" изображается символом 0, а знак отрицательного числа "-" изображается символом 1.  

 
 
 13.
 
Если на вход ЭВМ поступают целые числа, то в разрядной сетке один разряд отводится под знак числа, последующие разряды образуют поле числа (рис. 7.2).

Рис. 7.2. Представление чисел с ФТ (целые числа)

Если числа представлены в двоичной системе счисления, q = 2, то диапазон представления чисел в этом случае:
(7.3)

Заметим, что нумерация разрядов различна: для чисел с ФТ (правильные дроби) - слева направо, для чисел с ФТ (целые) справа налево.  

 
 
 14.
 
Если q не равно 2, то для каждой цифры Aq требуется только (S) двоичных разрядов (q=8, S=3; q=10, S=4 ...).

Чтобы определить S, зная q, можно воспользоваться следующей зависимостью:
(7.4)

где Ent(*) означает целую часть числа.

Всего в r-разрядной двоичной ячейке может разместиться Ent( r/S ) полных цифр q-ичного числа.

Если частное ( r/S ) имеет дробную часть, то для целых чисел старшая цифра должна размещаться в двоичных разрядах, число которых Y меньше S: 1 <= y < S.

Значение Y можно найти из соотношения
Y = Res( r/S ) (7.5)

где Res(*) означает остаток от деления.

Итак, старшая цифра целого числа при ее неполном (Y<S) представлении, всегда несколько (Y) единиц. Ее количественное значение (2Y-1).

 

Пример 1.

Пусть r = 16. Определить машинные изображения двоичного, десятичного и шестнадцатеричного чисел, то есть значения [(A2)max]Ф, [(А10)max]Ф, [(А16)max]Ф.

Решение.

а) q = 2.

(A2)max = 1- 2-r - правильные дроби.

(A2)maxприближенно равно 1.

(A2)max = 2r-1 - 1 - целые.

(A2)max= 215 - 1 = 32767.

Изображения чисел:

В обоих случаях

[(A2)max]Ф = 7FFF;

б) q = 10. Запишем максимальное десятичное число в 16-разрядную двоичную ячейку.

Для целых чисел:

(A10)max = 7999.

[(A10)max]Ф = 7999, целые.

Для правильных дробей:

(A10)max = 0,9998.

[(A10)max]Ф = 4CCC, правильные дроби;

в) q = 16.

Для правильных дробей:

(A16)max = 0,FFFE.

[(A16)max]Ф = 7FFF.

Для целых:

(A16)max = 7FFF16 = 3276710.

[(A16)max]Ф = 7FFF.

 

Пример 2.

Представить число -37,5310 в форме с фиксированной точкой в шестнадцатиразрядной ячейке. Рассмотреть варианты q = 2; 10; 16.

Решение.

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

А. Целые числа.

1. q = 2.

A10 = -37,52 = -100101,100001012 = -10010110000101 · KA.

KA = 2-8.

Ответ: [A]ФТ = A585, целые, q = 2, KA = 2-8.

Заметим, что такое представление ответа обязательно. Имея такой ответ, всегда можно восстановить исходное число.

2. q = 10.

A10 = -37,52 = -3752*KA, KA = 10-2.

Ответ: [A]ФТ = B752, целые, q = 10, KA = 10-2.

3. q = 16.

A10 = -37,52 = -25,8516 = -2585 · 16-2.

Ответ: [A]ФТ = A585, целые, q = 16, KA = 16-2.

В. Числа - правильные дроби.

1. q = 2.

A10 = -37,52 = -100101,100001012 = -0,10010110000101 · 26.

Ответ: [A]ФТ = CB0A, q = 2, правильные дроби, KA = 26.

2. q = 10.

A10 = -37,52 = -0,3752 · 102.

Ответ: [A]ФТ = 9BA9, q = 10, правильные дроби, KA = 102.

3. q = 16.

A10 = -37,52 = -25,8516 = -0,2585 · 16 2.

Ответ: [A]ФТ = 92C2, q = 16, правильные дроби, KA = 16 2

 
 
 
 15.
 
Если | А | > Amax, то число не размещается в разрядной сетке (ячейке). Попытка все же его записать приводит к ошибке. Соответствующая ситуация носит название "переполнение". При выполнении в компьютере арифметических операций результат автоматически проверяется на переполнение.  
 
 
 
   

ПРЕДСТАВЛЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ТОЧКОЙ

 
 
 
 
 16.
 
В нормальной форме, или в форме с плавающей точкой - ПТ (запятой), число записывается в виде:
(7.6)

где плюс-минусMA - мантисса числа со знаком; плюс-минусПA - порядок числа со знаком; q - основание системы счисления.  

 
 
 17.
 
Ниже приведен формат изображения чисел с ПТ:

Знак МA - знак числа. Мантисса должна быть нормализованной, т.е. удовлетворять условию:
(7.7)

Во время арифметических операций числа с ПТ автоматически нормализуются. Это позволяет поддерживать высокую точность вычислений. Заметим, что условия нормализации обеспечивают ненулевую старшую цифру мантиссы.  

 
 
 18.
 
Порядок - целое число (нумерация разрядов на рисунке справа налево: младшая значащая цифра порядка - справа). Он изменяется в пределах
(7.8)
 
 
 
 19.
 
Представление чисел с ПТ обеспечивает диапазон
(7.9)

Минимальное, отличное от нуля, положительное число:
(7.10)

Максимальное число:
(7.11)
 

 
 
 20.
 
Пример 3.

Дано: q = 2, K = 10, L = 4. Определить: Amin, Amax.

Amin = q-qL = 2-24 = 2-16.

Amax = ( 1 - 2-10 ) · 2(24-1) приближенно равно 215.

Пример 4.

Дано: q = 10, K = 10, L = 4. Определить: Amin, Amax.

Amin = 10-104 = 10-10000.

Amax = ( 1 - 10-10) · 10(104-1) приближенно равно 1010000-1 приближенно равно 109999.

Пример 5.

Компьютер имеет 16-разрядную ячейку памяти. Для чисел с ПТ 10 двоичных разрядов отводится для изображения мантиссы, 4 - для изображения порядка. Система счисления 2, 10, 16. Представить изображение числа - 9,610. Результат записать шестнадцатеричными цифрами (компактная форма).

Решение.

Представим разрядную сетку (r = 16):

 

а) q = 2: A10 = -9,6 = -1001,1001110012 = - 0,100110011001·24.

MA = - 0,100110011001

ПA = 410 = 1002

[A2]П = CCC4;

б) q = 10. A10 = - 9,6 · 101.

[A10]П = CB01;

в) q = 16. A16 = - 9,99 = - 0,999 · 161.

[A16]П = CCC1.  
 

 
 
   

ПОГРЕШНОСТИ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ

 
 
 
 
 21.
 
Представление числовой информации в компьютере, как правило, влечет за собой появление погрешностей (ошибок), величина которых зависит от формы представления чисел и от длины разрядной сетки (ячейки памяти).  
 
 
 22.
 
Абсолютная погрешность представления - разность между истинным значением входной величины А и ее значением, полученным из машинного изображения AM, т.е.:
дельта[ A ] = A - AM. (7.12)
 
 
 
 23.
 
Относительная погрешность представления - величина
(7.13)
 
 
 
 24.
 
Входные величины, независимо от количества значащих цифр, могут содержать грубые ошибки, возникающие из-за опечаток, некорректной постановки задачи или отсутствия более полной информации. Например, часто принимают Пи = 3,14. Однако эта же величина может быть получена с более высокой точностью (800 знаков после запятой и более). Если принять, что точное значение Пи = 3,14159265, то абсолютная погрешность равна дельта[ Пи ] = 0,00159265.

Часто некоторая величина в одной системе счисления имеет конечное значение, а в другой становится бесконечной величиной, например, дробь 0,1 имеет конечное десятичное представление, но, будучи переведенной в двоичную систему счисления, становится бесконечной дробью 0,0001100110011... . Следовательно, при переводе чисел из одной системы счисления в другую неизбежно возникают погрешности, оценивать которые нетрудно, если известны истинные значения входных чисел.  

 
 
 25.
 
Максимальная абсолютная погрешность для чисел с ФТ не превышает единицы младшего разряда:

дельта ( [A]ф )max меньше или равно 1 - для целых чисел и
дельта ( [A]ф )max меньше или равно q-m - для правильных дробей.

Минимальная абсолютная погрешность равна нулю.

Средняя (усредненная) абсолютная погрешность не превышает половины единицы младшего разряда. Эти величины будем использовать в качестве основных:
  дельта[ A ] ф = ( 1/2 )·q-m - для правильных дробей; (7.14)
  дельта[ A ] ф = 1/2 - для целых чисел. (7.15)

Для двоичных (q = 2) чисел заданных форматами рис. 7.1 и 7.2:
  дельта[ A2 ] ф = ( 1/2 )·2-r - для правильных дробей;  
  дельта[ A2 ] ф = 1/2 - для целых чисел.  
 

 
 
 26.
 
Различают максимальную и минимальную относительные погрешности представления:

а) для правильных дробей:
  (7.16)

При q = 2:
   
  (7.17)

При q = 2:
  (при большом r).  

Таким образом
  (7.18)

б) для целых чисел (q=2):
   

Итак,
   

Заметим, что точность представления одинакова для чисел с ФТ целых и дробных. Кроме того, погрешности представления малых чисел могут быть очень значительными.  

 
 
 27.
 
Абсолютная ошибка представления чисел с ПТ равна
  (7.19)
дельта[ M ]ф = ( 1/2 )·q-K, т.к. мантисса представляется числом с ФТ - правильной дробью.

Следовательно, абсолютная погрешность зависит от порядка числа: она минимальна при наибольшем отрицательном порядке -Пmax и максимальна при наибольшем положительном +Пmax.  

 
 
 28.
 
Относительная погрешность представления чисел с ПТ не зависит от порядка
  (7.20)

Определим диапазон изменения относительной ошибки:
   
   

Таким образом,
  (7.21)

т.е. точность представления чисел с ПТ изменяется в незначительных пределах и не зависит от величины числа.  

 
 
 29.
 
Пример 6.

Компьютер имеет 32-разрядную ячейку памяти, в которую записываются числа с ПТ. Под мантиссу отводится 24 двоичных разряда, под порядок - 6. Определить точность представления для двоичных, десятичных и шестнадцатеричных чисел (q = 2, 10, 16).

Решение.

 

   

 
 
   

КРАТКО О ГЛАВНОМ

 
 
 
 
 1.
 
Память компьютера - набор адресуемых ячеек. В ячейках хранятся двоичные многоразрядные числа. Основные способы представления чисел - представление с фиксированной и плавающей точкой (запятой).  
 
 
 2.
 
Числа с фиксированной точкой (запятой) используются для представления или целых чисел, или правильных дробей.  
 
 
 3.
 
Числа с плавающей точкой представляются мантиссой и порядком. Мантисса должна быть нормализованной.  
 
 
 4.
 
Формы представления чисел характеризуются диапазоном представления, абсолютной и относительной погрешностью.