23
1 Представление целых отрицательных чисел в ЭВМ Лекция № 6.

лекция 6 представление информации в эвм информатика

Embed Size (px)

Citation preview

11

Представление целых отрицательных чисел в ЭВМ

Лекция № 6.

22

Представление целых отрицательных

чисел в ЭВМ Формат хранения целых чисел со знаком аналогичен формату хранения двоичного числа без знака, за исключением того, что старший разряд числа отводится для хранения знака числа: s.

При хранении положительного числа знаковый разряд принимает значение 0, а при хранении . отрицательного числа равен 1.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

s b b b b b b b b b b b b b b b

Целое число со знаком может занимать в памяти один, два, четыре и восемь байтов.

33

Дополнительный код числаДля хранения отрицательных целых чисел используется

дополнительный код числа.

Правило № 6.

Чтобы найти представление m−разрядного двоичного целого отрицательного числа в дополнительном коде с количеством двоичных разрядов n (n>m) необходимо выполнить следующие действия:

1.1. Дополнить число слева n-m нулями до разрядности n.

2.2. Найти обратный код полученного числа. При этом двоичные нули исходного числа заменяются двоичными единицами, а двоичные единицы − двоичными нулями.

3.3. К полученному обратному коду прибавить единицу.

44

Пример нахождения дополнительного кода числа

Найдем шестиразрядный дополнительный код числа −1002.

1.Дополним исходное число до необходимой разрядности:

100 → 000100.

2. Найдем обратный код полученного числа:

000100

111011

3. Прибавим единицу к полученному коду:

111011 + 1 =111100.

55

Дополнительный код чисел вида: -2n-1

Заметим, что отрицательные целые n−разрядные числа вида: −2n−1

можно записать в дополнительном коде с n разрядами.Пример Найдем 6 разрядный дополнительный код 6 разрядного числа −25:1. Дополнять исходное число −25 = −1000002 до разрядности

равной 6 в этом случае нет необходимости. Число −25 уже шестиразрядное.2. Найдем значения обратного кода:

100000 011111

3. Прибавим единицу к полученному числу:011111 + 1 =100000.

Таким образом, дополнительный код числа −25 равен 100000.

66

Получение прямого кода числа по его дополнительному коду

Чтобы записать прямой код отрицательного числа, представленного в n разрядном дополнительном коде, необходимо:

1. Найти обратный код полученного числа. Для этого необходимо заменить в разрядах di (i=0, n−1) нули единицами,

а единицы − нулями.

2. К полученному числу прибавить единицу. При этом будет получена абсолютная величина искомого отрицательного числа в двоичной системе счисления.

3. Слева приписать к полученной абсолютной величине знак минус.

Правило № 7.

77

Пример восстановления прямого кода числа (проверка предыдущего примера)

1 Найдем обратный код дополнительного кода числа:

100000

011111

2 К полученному числу прибавим единицу:

0111112 + 12 = 1000002.

3 Слева к полученному числу припишем знак минус:

1000002 → −1000002.

Полученный результат совпал с исходным числом:

−1000002 = −25.

88

Минимальные и максимальные значения чиселЗначения минимальных отрицательных и максимальных положительных целых чисел, которые можно хранить в словах размера 1, 2,4 и 8 байтов, показаны в таблице. При заполнении таблицы использовались выражения для определения минимального отрицательного и максимального положительного числа:

Lmin = −28×l−1,

Lmax = 28×l−1 − 1,

где Lmin − минимальное целое отрицательное число, представленное

в дополнительном коде;

Lmax − максимальное целое положительное число,

представленное в прямом коде;

l − размер слова в байтах.

99

Значения минимальных и максимальных чисел

Размер слова в байтах

Размер слова в битах

Значение минимального числа

Значение максимального числа

1 8 −(27 )= − 128 (27 −1)= 127

2 16 −(215 ) = −32768 (215 − 1) =32767

4 32 −(231 ) = −2147483648 (231 − 1) =2147483647

8 64 −(263 ) < −16 × 1018 (263 − 1) >16 × 1018

1010

Представление дробных чисел в ЭВМ

Зн

Порядок Мантисса

1 байт 2 байт 3 байт 4 байт

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

1111

Представление десятичного дробного числа в коротком формате

Этапы:

2. Перевод числа в двоичную систему счисления

3. Округление числа

4. Нормализация числа

5. Получение смещенного порядка

6. Запись числа в память

1212

1. Перевод числа в двоичную систему счисления.Определение точности перевода неправильной

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

m + n + 1 = 25; m = 24 – n,

где n − номер старшего разряда числа, m − количество разрядов дробной части искомого числа.

Искомое число должно содержать 25 значащих разрядов.

1313

Определение точности перевода правильной дроби

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

Пусть номер найденного разряда –j. Обозначим через l количество разрядов с двоичными нулями, расположенными между разделительной точкой и разрядом с номером –j, l = j – 1. Тогда точность перевода равна:

m = l + 25.

Разряды с номерами небольшими, чем –j назовем значащими разрядами числа. Их количество должно быть равно 25.

1414

2. Округление числа.

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

В результате будет полученное число, содержащее 24 значащих разрядов.

1515

3. Нормализация числа

Для этого необходимо перемещать разделительную точку таким образом, чтобы искомое число, полученное в результате перемещения точки, располагалось на полусегменте [1, 2) (x - искомое число, 1<= x < 2).

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

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

При этом значение порядка увеличивается на величину равную количеству разрядов, на которые переместилась точка.

1616

3. Нормализация числа Если исходное число меньше единицы, то разделительная точка перемещается вправо.

При этом значение порядка уменьшается на величину, равную количеству разрядов, на которое переместилась разделительная точка.

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

Целая часть числа, расположенного на полусегменте [1, 2), равна единице.

Поэтому при хранении числа в памяти нет необходимости в хранении целой части числа. Целая часть отбрасывается.

В этом случае остается мантисса (дробная часть числа), содержащая 23 значащих разрядов.

1717

4. Определение смещенного порядка числа

. Для этого необходимо к абсолютному порядку, полученному на шаге 3 прибавить 127 (сместить порядок на 127). В результате получим смещенный порядок числа. Полученное десятичное число необходимо перевести в двоичную систему счисления и представить в форме 8- разрядного целого неотрицательного двоичного числа с фиксированной точкой без знака.

Смещенный порядок – неотрицательное число. Максимальное значение абсолютного порядка равно: 128.

1818

5. Запись числа в память

Дробное число в коротком формате представляется в памяти в форме нормализованного числа, занимающего 4 байта.

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

Смещенный порядок числа занимает 8 бит (1 байт) и расположен с нулевого по 6-ой бит первого байта и в 7-ом бите второго байта.

Мантисса числа занимает 23 бита и располагается во втором байте с нулевого по 6-ой бит и полностью занимает второй и третий байты числа.

1919

Представим дробное число 43.13 в коротком формате хранения

Переведем число 43.13 из десятичной системы счисления в двоичную систему счисления.

Переводим целую часть числа:

43 : 2 = 21 (1), 21 ≥ 2

21 : 2 = 10 (1), 10 ≥ 2

10 : 2 = 5 (0), 5 ≥ 2

5 : 2 = 2 (1), 2 ≥ 2

2 : 2 = 1 (0), 1 ≤ 2

Целая часть равна: 4310 = 1010112.

n = 5.

2020

Перевод дробной части числа.

Количество дробных разрядов числа определяем по формуле m = 24 – n, где m – количество дробных разрядов числа, n – номер старшего разряда целой части числа

m = 24 – 5 = 19.

Дробная часть равна: 0.1310 ≈ 0.00100001010001111012

Таким образом, 43.1310 ≈ 101011.00100001010001111012 .

2121

Округление К полученному числу прибавим двоичную единицу, по весу равную единице младшего разряда:

101011.0010000101000111101

+ 0.0000000000000000001

101011.0010000101000111110

Отбросим младший разряд суммы равный нулю. В результате будет получено число:

101011.0010000101000111112

2222

Нормализация числа

Нормализуем число, перемещаем точку на пять разрядов вправо:

101011.0010000101000111112 =

1.010110010000101000111112 × 2510

Отбросим старший разряд:

1.010110010000101000111112

0.010110010000101000111112

2323

Определение смещенного порядкаОпределим двоичный код смещенного порядка:

510 + 12710 = 13210 = 100001002.

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 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1

4 2 2 с 8 5 1 f

Знак Смещенный порядок

Мантисса

Запись числа в память