Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Представление данных и команд в памяти.doc
Скачиваний:
25
Добавлен:
02.11.2018
Размер:
188.93 Кб
Скачать

Запись отрицательных чисел с фиксированной точкой.

Отрицательные числа всегда имеют в своем двоичном представлении единицу в самом старшем разряде, который поэтому называют знаковым, а абсолютная величина кодируемого числа получается как двоичное дополнение остальных бит (нули нужно заменить на единицы и наоборот), увеличенное на один.

Отрицательные числа представляются в дополнительном двоичном коде, так называемом дополнении, которое получается в результате:

  1. Так называемого ИНВЕРТИРОВАНИЯ двоичного представления модуля исходного числа, когда НУЛЕВЫЕ биты превращаются в ЕДИНИЧНЫЕ, а ЕДИНИЧНЫЕ - в НУЛЕВЫЕ

  2. Добавления к инвертированному представлению единички.

Например, для представления числа - 42 необходимо провести следующие преобразования :

1. -4210== - 2А16== - 0010 10102

Инвертируем: из 0010 1010 получаем

1101 0101

2. Добавляем 1 :

1101 0101

1

1101 0110

Поэтому байт в оперативной памяти будет заполнен следующим образом

1

1

0

1

0

1

1

0

Или в 16 с/с : D6

В таком представлении старший разряд в слове используется для представления знака числа. В результате введения знакового разряда диапазон чисел смещается в сторону отрицательных чисел:

1 байт

-128..127

2 байт

-32768..32767

4 байт

-2147483648..2147483647

8 байт

-263..263-1

Например, для представления числа - 259 необходимо произвести следующие построения :

1. - 25910 = - 10316 = - 00 00 01 03 16 =

== - 0000 0000 0000 0000 0000 0001 0000 0011 ====>

  1. Строим дополнение и добавляем единичку:

1111 1111 1111 1111 1111 1110 1111 1100

1

1111 1111 1111 1111 1111 1110 1111 1101

F F F F F E F D

Для нахождения дополнения лучше пользоваться способом, основанном на следующих построениях :

-- для однобайтового представления от числа 100 в 16 с/с нужно отнять значение представляемого числа в 16 с/с. Например, для числа -42, которое в шестнадцатеричной системе счисления представимо как -2А, это будет так :

_1 00

D6.

-- для двухбайтового представления от числа 1 00 00 в 16 с/с нужно отнять значение представляемого числа в 16 с/с. Например, для числа -42 это будет так :

_ 1 00 00

FF D6

-- для четырехбайтового представления такое отнимание делается от 1 00 00 00 00.

Представление чисел с плавающей точкой

Представление чисел служит для хранения в памяти целых и дробных чисел, например таких -5 159 или 234.7 или 0.0000025 или 2.3*10 .

Числа с плавающей точкой представляются в виде так называемых

М А Н Т И С C Ы и П О Р Я Д К А .

Число с плавающей точкой это есть способ записи числа в позиционной системе счисления с основанием R, когда некоторое число N представляется в виде

N = q * Rp

p - целое число, называемое ПОРЯДКОМ числа,

q - правильная дробь, называемая МАНТИССОЙ.

Если q < 0.1, то мантисса называется НЕНОРМАЛИЗОВАННОЙ, в противном случае - НОРМАЛИЗОВАННОЙ.

Представлением десятичного числа в виде числа с плавающей точкой в оперативной памяти ПЭВМ называется представление, получаемое следующим образом:

1. Исходное десятичное число с точкой переводится в число в шестнадцатеричной системе счисления.

2. Полученное шестнадцатеричное представление числа с точкой переводится в двоичную систему счисления.

3. Полученное двоичное представление числа с точкой записывается в двоичной системе счисления посредством применения так называемых усеченной мантиссы и усеченного порядка

4. Определяется характеристика числа по формуле

7F + значение усеченного порядка

5. В первом слева бите четырехбайтового представления числа кодируется знак числа (0 – если число положительное, 1 – если число отрицательное ).

6. В следующих восьми битах, если смотреть на них слева направо, записывается характеристика.

7. Оставшиеся биты ( 32 - 1 - 8 = 23 ) заполняются усеченной мантиссой.

8. Полученное на предыдущих шагах четырехбайтовое представление при расположении его в памяти хранится там в ПЕРЕВЕРНУТОМ виде.

Представление числа -256.5 в виде четырехбайтового числа с плавающей точкой:

1. -256.5 == - 100.8 16

  1. - 100.8 == - 1 0000 0000 . 1000 2

  2. - 1 0000 0000 . 1000 == - 1 . 0000 0000 1000 * 10 8

Здесь число 8 в десятичной, или 8 в шестнадцатиричной, или 1000 в двоичной и есть то, что называется УСЕЧЕННЫМ ПОРЯДКОМ

А то, что стоит после точки, перед которой стоит единичка в 2 с/с, а именно:

0000 0000 1000 - и есть усеченная мантисса.

  1. ХАРАКТЕРИСТИКА ==

7F + 8 = 87 16 == 1000 0111 2

5. Рисуем четыре байта или 32 бита и кодируем в первом бите знак числа. Оно у нас отрицательное, а значит в первый бит мы должны посадить 1 :

1

6. В следующих восьми битах записывается характеристика ( которая у нас равна 1000 0111 ) :

1

1

0

0

0

0

1

1

1

7. В оставшиеся биты записываем Усеченную мантиссу (столько разрядов, сколько поместится, а если биты остаются пустыми, то заполняем их ноликами ). У нас усеченная мантисса равна 0000 0000 1000 – ее мы и запишем, как сможем.

1

1

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

Обычно будет требоваться записать полученное представление в 16 с/с. Для чего нужно все это поделить на тетрады слева направо и записать, что это будет

1

1

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

С 3 8 0 4 0 0 0

не что иное как С3 80 40 00.

8. Единственное, что осталось сделать – это перевернуть полученное представление в оперативной памяти, т.е. сказать, что в памяти будем иметь

00 40 80 С3.

Восьми байтовое представление Числа с Плавающей Точкой характеризуется тем, что процесс построения этого представления полностью совпадает с приведенным выше Определением для четырехбайтового представления, за небольшим лишь исключением, что под характеристику отводится 11 битов , а сама

ХАРАКТЕРИСТИКА == 3FF + р , где

р - усеченный порядок числа с плавающей точкой в 2 с/с, да еще тем, что под усеченную мантиссу отводится :

8 байтов * 8 битов == 64 бита – 1 бит под знак == 63 бита – 11 битов под характеристику == 52 бита под усеченную мантиссу.

Напр 256,5

1. -256.5 == - 100.8 16

  1. - 100.8 == - 1 0000 0000 . 1000 2

  2. - 1 0000 0000 . 1000 == - 1 . 0000 0000 1000 * 10 8

  3. ХАРАКТЕРИСТИКА ==

3FF + 8 = 407 16 == 0100 0000 0111 2

1010 0000 0011 1000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

A 0 3 8 0 4 0 0 0 0 0 0 0 0 0 0

10

Упражнение. Нарисовать внутреннее представление чисел :

  1. –25.25

  2. 2048.0625