Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_Конспект лекций.doc
Скачиваний:
27
Добавлен:
16.11.2018
Размер:
871.42 Кб
Скачать

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

Формат хранения целых чисел со знаком аналогичен формату хранения двоичного числа без знака (см. рис. 8.1), за исключением того, что старший разряд числа отводится для хранения знака числа  s. При хранении положительного числа знаковый разряд принимает значение 0, а при хранении отрицательного числа – 1. Целое число со знаком может занимать в памяти 1, 2, 4 и 8 байтов. Формат хранения целого двоичного числа со знаком, занимающего в памяти два байта и принимающего значения от –32768 до 32767, представлен на рис. 5.3.

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

Рис. 5.3

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

Рассмотрим целое отрицательное n-разрядное двоичное число:

,

где an-1, ..., a1, а0 цифры или соответствующие веса цифр: 0 и 1 разрядов целого отрицательного n разрядного двоичного числа; an-1...а1a0  запись целого отрицательного n разрядного двоичного числа; п1,..., 1, 0 номера разрядов целого отрицательного n разрядного двоичного числа; знак суммы; i = 0, n1  нижний и верхний пределы суммирования; ai2i  весовой коэффициент i-го разряда (i = 0, n  1).

Абсолютная величина целого отрицательного n разрядного двоичного числа равна:

.

Запись числа в форме: zan-1...а1a0 будем называть прямым кодом целого числа со знаком. Через z обозначен знак числа («» или «+»).

Для записи числа в обратном и дополнительном кодах вводится дополнительный разряд с номером n с отрицательным весовым коэффициентом: C, C > 0.

Обратный код числа

Для образования обратного кода коэффициент С выбирают равным максимальному n разрядному числу:

C = 2n  1.

Значение числа N в обратном коде определяется выражением:

N = bnbn-1...b1b0 = bn (2n + 1) + bn-1qn-1+…+ b1q1+ b0q0,

или

,

где bn, bn-1,..., b1, b0 цифры и соответствующие веса цифр: 0 и 1 разрядов числа; bn дополнительный знаковый разряд, для неотрицательных чисел равен 0 (bn = 1), для отрицательных чисел равен единице (bn = 1); bnbn-1...b1b0  запись целого n разрядного отрицательного числа в обратном коде; n, п  1, ..., 1, 0 номера разрядов; bi  2i  весовой коэффициент i-го разряда (i = 0, n1); (2n + 1) весовой коэффициент знакового n-го разряда.

Пример 8.16. Пусть в обратном коде четырехразрядное число A имеет вид: 1011 (знаковый разряд 1, число отрицательное). Тогда это число в десятичной системе счисления равно:

A = 1  (23 + 1) + 0  22 + 1  21 + 1  20 = 7 + 0 + 2 + 1 = 4 (01002).

Пример 8.17. Пусть в обратном коде четырехразрядное число B имеет вид: 0100 (знаковый разряд 0, число неотрицательное). Тогда это число в десятичной системе счисления равно:

B = 0  (23 + 1) + 1  22 + 0  21 + 0  20 = 0 + 4 + 0 + 0 = +4 (+01002).

Найдем правило нахождения (n + 1)-разрядного обратного кода m-разрядного отрицательного числа (mn). Запишем равенства:

;

;

;

.

Последнее равенство справедливо при 1 bi = ai или bi = 1  ai (i = 0, n  1).

Таким образом, для получения (n + 1)-разрядного обратного кода (цифры bi, i = 0, n  1) целого m-разрядного (mn) отрицательного числа (цифры aj, j = 0, m1) необходимо:

  1. дополнить исходное m-разрядное число am1...а1a0 незначащими n m нулями до разрядности n, т.е получить число: an1an2amam1...а1a0, aj=0, j = m, n  1);

  2. получить цифры обратного кода bi (i = 0, n  1). Для этого в n разрядах абсолютной величины исходного числа ai (i=0, n1), дополненной до разрядности n, заменить 1 на 0, а 0 на 1 (bi = 1 ai, i = 0, n1);

  3. в разряд с номером n записать 1 (bn = 1).

Пример 5.18. Найдем шестиразрядный обратный код числа 410 (1002). Знаковый разряд имеет номер 5 (n = 5). Количество разрядов в прямом коде числа равно 3 (m = 3).

  1. Дополним исходное число двумя незначащими нулями (nm = = 5  3 = 2) до разрядности 5:

1002 = 001002.

  1. Получим цифры обратного кода bi (i = 0, 4). В пяти разрядах исходного числа меняем цифры 0 на 1 и 1 на 0:

цифры исходного числа: 00100

цифры обратного кода: 11011

  1. Формируем старший знаковый разряд: 11011  1111011.

Таким образом, шестиразрядный обратный код числа 4 равен 1111011.

Заметим, что запись неотрицательного числа при нахождении его обратного кода не изменяется:

;

;

.

Равенство выполняется при bi = ai., i = 0, n1, bn = 0.

Сформулируем правило образования прямого кода числа из обратного кода целого отрицательного числа.

Для этого необходимо:

  1. вычеркнуть n-й разряд обратного кода числа;

  2. провести замену в оставшихся n1 разрядах 1 на 0, 0 на 1;

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

Пример 5.19. Пусть обратный код числа равен 1011 (n = 3). Найдем прямой код числа.

  1. Вычеркиваем третий разряд обратного кода числа:

1011  011.

  1. Проводим замену в оставшихся трех разрядах 1 на 0, 0 на 1:

011

100

  1. Приписываем слева к полученной абсолютной величине числа знак «минус»:

1002  1002 (410).

Таким образом, четырехразрядный обратный код числа 1011 соответствует числу 4.

Пример 5.20. Пусть обратный код числа равен 1111 (n = 3). Найдем прямой код числа.

  1. Вычеркиваем третий разряд обратного кода числа:

1111  111.

  1. Проводим замену в оставшихся трех разрядах 1 на 0, 0 на 1:

111

000

  1. Приписываем слева к полученной абсолютной величине числа знак «минус»:

02  02 (010).

Таким образом, четырехразрядный обратный код числа 1111 соответствует числу 0.

При использовании обратного кода числа число 0 имеет два представления: 000..00 и 111..11.

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

Lmin = 28l1  1, (5.3)

Lmax = 28l1  1, (5.4)

где Lmin  минимальное целое отрицательное число, представленное в обратном коде; Lmax  максимальное целое положительное число, представленное в обратном коде; l  размер слова в байтах.

Таблица 5.3

Размер слова

в байтах

Размер слова

в битах

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

числа

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

числа

1

8

(27 1)=  127

(27 1)= 127

2

16

(215  1) = 32767

(215  1) = 32767

4

32

(231  1) = 2147483647

(231  1) = 2147483647

8

64

(263  1) < 16  1018

(263  1) < 16  1018