Представление отрицательных чисел в эвм
При выполнении алгебраического сложения над двумя числами (положительными и отрицательными) нужно произвести целый ряд действий:
анализ знаков исходных чисел для определения вида операции (сложить или вычесть);
при вычитании предварительно сравнить модули чисел;
выполнить действие (сложить или вычесть);
определить знак результата.
Поэтому в ЭВМ наряду с сумматором нужно иметь вычитатель.
Недостаток этого способа сложения – увеличение аппаратурных затрат. С целью отказа от вычитания и замены алгебраического сложения арифметическим для представления отрицательных чисел в ЭВМ используются:
Идея построения кодов состоит в следующем: код интерпретируется как число без знака, а диапазон представляемых кодами чисел без знака разбивается на два поддиапазона. Один из них представляет положительные числа, а другой отрицательные. При этом значение старшего разряда кода указывает на знак числа. Остальные разряды кода являются цифровыми разрядами.
При получении дополнительного кода числа необходимо его сначала перевести в прямой вид, потом в обратный и получить дополнительный код.
4.1 Прямой код
Прямой код двоичного числа G, представляемого в n-разрядной сетке определяется как:
где А – вес старшего разряда сетки (для дробей А = 1, для целых А = 2n-1). Если n = 8, то А = 10000000 = 27 = 28-1 = 128.
Диапазон чисел, представляемых прямым кодом:
Рисунок
4.1 - Поддиапазоны прямого кода
На рисунке 4.2 показан симметричный диапазон чисел в прямых кодах при n = 8.
Рисунок 4.2 - Диапазон чисел в прямых кодах.
Например, число 89 представляется у восьми разрядном слове (байте) в виде двоичного числа так:
Номер разряда |
старшие <----- нумерация разрядов байта -----> младшие |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
Весовые значения разрядов |
Знак |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
|
8910 |
= |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
Например, число -89 представляется у восьми разрядном слове (байте) в виде двоичного числа так:
Номер разряда |
старшие <----- нумерация разрядов байта -----> младшие |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
Весовые значения разрядов |
Знак |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
|
8910 |
= |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
Правило:
Прямой код двоичного числа совпадает с записью самого числа. Значения знакового разряда для положительных чисел равно 0, а для отрицательных равно 1.
Знаковым разрядом обычно является крайний разряд в разрядной сетке. Знаковый разряд обычно записывают, отделяя от цифровых, запятой или точкой. Если количество разрядов кода не указано, то будем считать, что под запись кода выделен один байт.
Пример:
А = +1011
Апр
= 0.0001011
В = - 1101 Впр = 1.0001101
