- •1. Кибернетика и информатика
- •2.Представление информации в цифровых автоматах.
- •2.1. Системы счисления
- •2.2. Перевод чисел в системах счисления
- •2.2.1. Перевод двоичных чисел в восьмеричную и шестнадцатеричную системы счисления
- •2.2.2. Перевод чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную систему счисления.
- •2.2.3. Перевод целых чисел в десятичную систему счисления.
- •2.2.4. Перевод целых чисел из десятичной системы счисления в систему счисления с основанием q
- •2.2.5. Перевод дробных чисел из десятичной системы счисления в систему счисления с основанием q
- •2.2.6. Перевод дробных чисел из произвольной позиционной системы счисления в десятичную систему счисления
- •2.3. Хранение информации в памяти эвм
- •2.3.1. Хранение в эвм целых чисел
- •2.3.2. Хранение в эвм дробных чисел
- •2.3.3 Представление символьной информации в компьютере
- •2.3.3.1 Идея кодовой таблицы
- •2.3.3.2 Кодовые таблицы
- •2.3.4. Кодирование графической информации
- •111111010 - Единицы переноса
- •1001101 - Второе слагаемое
- •110101 - Вычитаемое
- •3.2. Использование дополнительного кода
- •3.3. Сложение и вычитание в восьмеричной системе счисления
- •3.4. Сложение и вычитание в шестнадцатеричной системе счисления
- •Приложение 1
- •Приложение 2 Задания для самостоятельного решения
- •Требования к оформлению заданий
- •Источники литературы
2.3.2. Хранение в эвм дробных чисел
Для хранения дробных чисел в ЭВМ используется нормализованное двоичное число с плавающей точкой. Всякое число с плавающей точкой состоит из двух частей: мантиссы и порядка. Мантисса содержит значащие цифры, а с помощью порядка указывается положение двоичной точки. Обе части числа хранятся вместе в четырех (короткий формат) или в восьми (длинный формат) последовательных байтах.
Представление числа включает в себя:
— знак числа;
— значение порядка;
— значение мантиссы.
Рассмотрим хранение дробного числа в коротком формате (рис. 2.5).
Зн |
Порядок |
Мантисса |
||||||||||||||||||||||||||||||||
|
Первый байт |
|
Второй байт |
Третий байт |
Четвертый байт |
|||||||||||||||||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
b |
|||
Рис. 2.5
Знак числа (на рисунке он обозначен символом Зн) представлен одним битом и равен 0, если число - положительное, и равен 1, если число -отрицательное.
Для хранения порядка выделяется 8 битов (7 битов первого байта и один старший бит второго байта числа). Порядок числа представляется в двоичной системе счисления. С помощью восьми битов можно представлять числа от 0 до 255. Это означает, что значением порядка является целое число от -128 до 127. Для того чтобы не хранить знак порядка, последний представляется с избытком - смещенный порядок. Показателем избытка (смещение порядка) является число 127. Значение смещенного порядка образуется сложением значения действительного порядка с показателем избытка.
Мантисса представляется в двоичной системе счисления и занимает 23 двоичных разряда (короткий формат).
Точка всегда подразумевается перед самым левым битом. Соответственно этому значения цифр представляются в двоичных позициях мантиссы слева направо: 2-1,2-2, ..., 2-23.
Числа хранятся в нормализованном виде и мантисса принимает значения на полусегменте [1,2).
Рассмотрим процесс нормализации числа. Первоначально порядок считается равным 0, а его код в представлении числа равен 127 (0+127).
Первый случай: число меньше 1. Процесс нормализации заключается в сдвиге разделительной точки числа вправо и в одновременном уменьшении значения порядка на число сдвигов до тех пор, пока мантисса не будет располагаться на полусегменте [1,2).
Второй случай: число больше или равно 2. Процесс нормализации заключается в сдвиге разделительной точки числа влево и в одновременном увеличении значения порядка на число сдвигов до тех пор, пока мантисса не будет располагаться на полусегменте [1,2).
Третий случай: число располагается на полусегменте [1,2). В этом случае нормализация не требуется.
Если число нормализовано, то старший бит мантиссы всегда равен 1 и поэтому в его хранении нет необходимости.
Отрицательные дробные числа не представляются в дополнительном коде. В этом случае знак числа равен 1.
В длинном формате представляются числа с повышенной точностью. При этом все число занимает 8 байтов, из которых для представления мантиссы используются 55 битов.
Процедура получения представления дробного числа, заданного в десятичной системе счисления, следующая:
переведем исходное десятичное число в двоичную систему счисления. При переводе определим точность перевода, для этого рассмотрим 2 случая:
Абсолютная величина исходного числа больше либо равна единице. В
этом случае точность перевода m определяется из следующего равенства: m+n+1=25; m – точность перевода кол-ва, разрядов дробной части и искомого 2 числа; n+1 – кол-во разрядов в целой части и искомого двоичного числа; m=24-n; n – номер старшего разряда. Для того чтобы определить точность перевода m, необходимо перевести целую часть, затем определить номер старшего разряда n и затем воспользоваться выражением m=24-n, для определения точности перевода.
Значение десятичного исходного числа по абсолютной величине
меньшей единицы. Для определения точности перевода необходимо подсчитать количество нулей, которые получаем в дробной части искомого двоичного числа, расположенных между разделительной точкой и первой единицей. Эту единицу можно отыскать, просматривая искомое число от разделительной точки вправо. Количество нулей – l. 0.00…01… Тогда точность перевода m будет выражаться как m= l+25.
Округление числа. Для того чтобы округлить число, нужно к полученному числу прибавить единицу. По весу равной единице младшего разряда. Младший разряд равен –m. После выполнения сложения разряд –m отбрасывается.
Нормализация числа. В результате нормализации необходимо получить число, которое будет располагаться на полусегменте от 1 до 2-x: [1;2), т.е. x≥1, но x<2. Это достигается путем перемещения разделительной точки, при этом изменение значения числа компенсирует изменение порядка. Значение порядка равно нулю (к=0).
Если значение числа ≥2, то разделительная точка перемещается влево.
При этом значение порядка возрастает на величину равную кол-ву разрядов, на которых переместится разделительная точка.
Исходное число <1, в этом случае разделительная точка перемещается
вправо, значение порядка уменьшается на величину равную кол-ву разрядов, на которых переместится разделительная точка. В результате будет получено число, целая часть которого равна единице. Единицу целой части можно не хранить, ее всегда можно восстановить. А оставшаяся дробная часть числа (мантисса) будет содержать 23 двоичного разряда. В результате нормализации будет получен абсолютный порядок числа.
Нахождение смещенного порядка. Для нахождения смещенного порядка
необходимо к найденному абсолютному порядку прибавить число 127, затем полученное десятичное число необходимо перевести в двоичную систему счисления и дополнить двоичное число незначащими нулями до разрядности 8. Полученный порядок называется смещенным. Max значение смещенного порядка 255, min=0, т.е. смещенный порядок хранится в формате целого двоичного числа с фиксирующей точкой без знака. Абсолютный порядок может принимать значение от -127 до +128, т.е.(-127,128).
Разместим число в памяти. В 7 бите 0 байта будет располагаться знак
числа, если число отрицательно, то знак числа равен 1 , в противном случае равен 0. Смещенный порядок занимает 8 бит и размещается с 0 по 6 бит
0-го байта и в 7 бите 1-го байта. Мантисса числа занимает 23 бита и занимает с 0 по 6 бит 1-го байта и 23 байт полностью.
.
Пример 2.14. Представим в памяти ЭВМ десятичное число 10.6.
1. Переведем число из десятичной системы счисления в двоичную систему счисления:
10.610= 1010.(1001)2 =1010.1001100110011001100112.
2. Округлим число:
+1010.1001100110011001100112
0.0000000000000000000012
1010.1001100110011001101002 .
3. Нормализуем число:
1010.100110011001100110102= 1.010100110011001100110102 ∙2310.
4. Отбросим старший разряд:
1.01010011001100110011010 → .01010011001100110011010.
5. Определим двоичный код порядка:
310+ 12710= 13010=100000102.
6. Определим знаковый разряд: знаковый разряд положительного числа равен 0.
Представление указанного числа в памяти ЭВМ показано на рис. 2.6 (шестнадцатеричное представление числа в памяти: 4129999а).
Зн |
Порядок |
Мантисса |
||||||||||||||||||||||||||||||||
|
Первый байт |
|
Второй байт |
Третий байт |
Четвертый байт |
|||||||||||||||||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
|||
4 |
1 |
2 |
9 |
9 |
9 |
9 |
а |
|||||||||||||||||||||||||||
Рис. 2.6
