Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
орматы представления данных в памяти ЭВМ. Машинные коды
План.
Для представления чисел (данных) в памяти ЭВМ выделяется определенное количество битов. В отличие от нумерации разрядов числа биты в байте нумеруются слева направо, начиная с 0. Каждый байт в памяти ЭВМ имеет свой порядковый номер, который называется абсолютным адресам байта. Байт является основной единицей хранения данных, это наименьшая адресуемая единица обмена информации в оперативной памяти ЭВМ, то есть минимальная единица обмена информации, имеющая адрес в памяти ЭВМ.
Последовательность нескольких смежных байтов образует поле данных. Количество байтов поля называется длиной поля, а адрес самого левого байта поля - адресом поля. Обработка информации может вестись либо побайтно, либо полями данных (или форматом данных). Форматы данных показывают, как информация размещается в оперативной памяти и регистрах ЭВМ. Форматы данных различают по длине, типу данных и структуре, а каждое значение, содержащееся в байте может быть интерпретировано по разному:
В ЭВМ существуют следующие формы представления целых чисел: полуслово (байт), слово (два последовательных байта, пронумерованных слева направо от 0 до 15), двойное слово (4 байта).
0 7 |
8 15 |
16 23 |
24 31 |
Байт |
Байт |
Байт |
Байт |
Слово |
Слово |
||
Двойное слово |
Если в указанных форматах размещаются числа, то веса их разрядов возрастают справа налево.
В ЭВМ для представления чисел используется естественная (представление числа с фиксированной точкой) и полулогарифмическая (представление числа с плавающей точкой) формы.
Представление чисел в форме с фиксированной точкой.
В используемых представлениях чисел “запятая” или “десятичная точка” - это условный символ, предназначенный для разделения целой и дробной частей числа. Запятая имеет, следовательно, точный математический смысл, независимо от используемой системы счисления, и ее положение нисколько не меняет алгоритм вычислений или форму результата.
Если обрабатываемые числа имеют величину одного порядка, можно фиксировать позицию запятой или точки (такое представление называется представлением с фиксированной точкой). Тогда при обработке чисел в машине нет необходимости учитывать положение (представлять) десятичной точки. И тогда ее положение на уровне программы считается одинаковым и учитывается только в результате.
Существует в основном 2 способа фиксирования десятичной точки:
1) точка располагается справа от младшей цифры числа, и мы имеем целые числа;
2) точка располагается слева от старшей цифры числа, и мы имеем дробные числа по абсолютному значению меньше единицы.
Целые положительные числа можно представлять непосредственно в двоичной системе счисления (двоичном коде). В такой форме представления легко реализуется на компьютере двоичная арифметика.
Если же нужны и отрицательные числа, то знак числа может быть закодирован отдельным битом (обычно это старший бит). Старший разряд является знаковым, если он содержит 1, то число отрицательное, если 0, то число положительное.
При шестнадцатиразрядной сетке мы имеем:
В общем случае диапазон представления целых чисел равен (n число разрядов в формате):
Формат |
Число разрядов |
Диапазон |
|
знаковый |
беззнаковый |
||
Байт |
8 |
-128; 127 |
0; 255 |
Слово |
16 |
-32768; 32767 |
0; 65535 |
Дв. слово |
32 |
-2147483648; 2147483647 |
0; 4294967295 |
Рис. Формат целых чисел без знака |
Рис. Формат целых чисел со знаком |
|||||||||
n-1 |
n-2 |
1 |
0 |
n-1 |
n-2 |
1 |
0 |
|||
. . . |
S |
. . . |
||||||||
значащие биты |
⌂ местоположение двоичной точки |
^знак |
значащие биты |
⌂ местоположение двоичной точки |
Существенным недостатком такого способа представления является ограниченный диапазон представления величин, что приводит к переполнению разрядной сетки при выходе за допустимые границы и искажению результата, например, если рассмотреть пяти разрядную знаковую сетку, то при сложении двух чисел +22 и +13 получим:
Представление чисел в форме с плавающей точкой.
Действительные числа в математике представляются конечными или бесконечными дробями. Однако в компьютере числа хранятся в регистрах и ячейках памяти, которые являются последовательностью байтов с ограниченным количеством разрядов. Следовательно, бесконечные или очень длинные числа усекаются до некоторой длины и в компьютерном представлении выступают как приближенные.
Для представления действительных чисел, как очень маленьких, так и очень больших, удобно использовать форму записи чисел в виде произведения:
А = ± М·n± p
где n - основание системы счисления;
M мантисса;
р целое число, называемое порядком (определяет местоположение десятичной точки в числе).
Такой способ записи чисел называется представлением числа с плавающей точкой.
Пример: -245,62=-0,24565·103, 0,00123=0,123·10-2=1,23·10-3=12,3·10-4
Очевидно, такое представление не однозначно.
Если мантисса заключена между n-1 и 1 (т.е. 1/n |M| <1), то представление числа становится однозначным, а такая форма называется нормализованной.
Пример: для десятичной системы счисления - 0,1 < |m| < 1 (мантисса - число меньше 1, и первая цифра после запятой отлична от нуля, т.е. значащая).
Действительные числа в компьютерах различных типов записываются по-разному, тем не менее, существует несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру. Для основанного на стандарте IEEE 754 (определяет представление чисел с одинарной точностью (float) и с двойной точностью (double)) представление вещественного числа в ЭВМ используется m+p+1 бит, распределяемые следующим образом: один разряд (S)- используется для знака мантиссы, p разрядов определяют порядок, m разрядов определяют абсолютную величину мантиссы. Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово. Для записи чисел с двойной точностью требуется шестидесятичетырёхбитовое слово.
1 |
p-1 0 |
m-1 0 |
S |
Порядок |
Дробная часть М |
Так как порядок может быть положительным или отрицательным, нужно решить проблему его знака. Величина порядка представляется с избытком, т.е., вместо истинного значения порядка хранится число, называемое характеристикой (или смещенным порядком).
Смещение требуется, чтобы не вводить в число еще один знак. Смещённый порядок всегда положительное число. Для одинарной точности смещение принято равным 127, а для двойной точности 1023 (2p-1-1). В десятичной мантиссе после запятой могут присутствовать цифры 1:9, а в двоичной - только 1. Поэтому для хранения единицы после двоичной запятой не выделяется отдельный бит в числе с плавающей запятой. Единица подразумевается, как и двоичная запятая. Кроме того, в формате чисел с плавающей запятой принято, что мантисса всегда больше 1. То есть диапазон значений мантиссы лежит в диапазоне от 1 до 2.
Примеры:
1) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:
11000001 01001000 00000000 00000000
Разделим двоичное представление на знак (1 бит), порядок (8 бит) и мантиссу (23 бита):
1 10000010 10010000000000000000000
2) Определить число с плавающей запятой, лежащее в четырёх соседних байтах:
01000011 00110100 00000000 00000000
Поскольку под мантиссу и порядок отводится определенное число разрядов, соответственно m и p, то можно оценить диапазон чисел, которые можно представить в нормализованном виде в системе счисления с основанием n.
Если m=23 и p=8 (4 байта), то диапазон представленных чисел от 1,5·10-45 до 3,4·10+38 (обеспечивает точность с 7-8 значащими цифрами).
Если m=52 и p=11 (8 байт), то диапазон представленных чисел от 5,0·10-324 до 1,7·10+308 (обеспечивает точность с 15-16 значащими цифрами).
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в компьютере при заданном формате.
При выполнении операций с плавающей точкой возникает меньше проблем с переполнением разрядной сетки, чем для операций с фиксированной точкой. Однако операции с плавающей точкой более сложные, так как они требуют нормализации и денормализации мантисс.
В двоичной арифметике, как и в обычной, различают положительные и отрицательные числа. В двоичной системе счисления существует три способа представления чисел со знаком.
- представление абсолютной величины и знака отдельно (или прямой код);
- представление отрицательных чисел в дополнительном коде;
- представление отрицательных чисел в обратном коде.
В прямом коде старший разряд кодирует знак числа, а остальные модуль числа. Условно принято знак “+” обозначать 0 и знак “-” - 1. Например, число +10 в прямом коде будет представляться как 01010пк, а -10 11010пк.
В дополнительном коде положительное число кодируется также как и в прямом, а чтобы представить отрицательное число в дополнительном коде, необходимо записать n-битный модуль этого числа, поменять в нем нули на единицы, единицы на 0 и добавить единицу к самому младшему разряду.
Пример: представить число -10 в дополнительном коде.
Двоичный эквивалент +10 = 01010пк.
Дополнительный код получается следующим образом:
10101
+ 1
10110дк = -10
Можно предложить второй способ перехода к дополнительному коду: необходимо записать n-битный модуль этого числа, оставить без изменения все нули в младших разрядах и первую младшую единицу, а остальные разряды проинвертировать.
Пример: представить число -50 в дополнительном коде.
Двоичный эквивалент +50 = 00110010пк.
Дополнительный код получается следующим образом: 11001110дк, а по первому правилу:
11001101
+ 1
11001110дк = -50
Упражнение: представить число -33 в дополнительном коде. Должно получиться 1|1011111дк.
Получить дополнительный код отрицательного числа Х можно по третьему правилу: Хдк=2n-|X|, где n длина машинного слова.
Пример: представить число -50 в дополнительном коде (где n =8).
2n=28=64=1000000002
|X|=50=1100102
100000000
- 110010
11001110дк
Из правил можно сделать вывод, что положительные числа в случае увеличения числа разрядов дополняются слева нулями, а отрицательные единицами.
Обратный код двоичного числа образуется по следующему правилу: обратный код положительного числа совпадает с их прямым кодом, а чтобы представить отрицательное число в обратном коде, необходимо заменить все 1 на 0, а все 0 на 1 и поместить 1 в знаковый разряд.
Пример, возьмем то же самое число -10. Двоичный эквивалент +10 = 01010пк, откуда получаем обратный код -10: 10101ок.
Необходимо отметить, что для положительных чисел прямой, обратный и дополнительный коды совпадают, а для отрицательных - нет.
Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.
Как известно все математические операции в процессоре сводятся к операциям сложения, сдвига кода и логическим операциям. Использование дополнительного и обратного кодов позволяет заменить вычитание, умножение, деление на используемые операции.
6