Алгебраическое представление двоичных чисел в ЭВМ 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Алгебраическое представление двоичных чисел в ЭВМ



Знак числа обычно кодируется двоичной цифрой: знак "+" кодируется 0, знак "-" кодируется 1. Если двоичные числа —45 и 31 в форме с запятой, фиксированной после нулевого разряда, сложить, то получим неверный результат 1100.1100 или в десятичной системе счисления -45+31 =-76 (10101101+00011111=11001100). Чтобы арифметические операции над знаковыми числами в ЭВМ можно было бы производить точно также, как и с беззнаковыми переменными, отрицательные числа представляются в дополнительном коде.

Следует упомянуть, что aльтepнaтивными являютcя представления в прямом и обратном коде.

Прямой код числа N –  = -(abs (N). Такой код и был использован в рассмотренном выше примере. Недостатки такого представления:

- операцию вычитания нельзя заменить операцией сложения;

- представление числа 0 неоднозначно.

Обратный код числа получается инверсией двоичных разрядов. Через а обозначим двоичный разряд числа, а через а* - инверсию двоичного разряда (если а=1, то а*=0 и если а=0, то а*=1). Правило получения обратного кода:

если N>0, то = 0aaaaaaa;

если N<0, то =1 а* а* а* а* а* а* а* а*,

если N=0, то имеет место неоднозначность  или .

Например, число 11 в обратном коде представляется как 0.1011, а число с=-7 будет представлено как 1.1000. Сложим эти числа:

0.1011+1.1000= 0.0011+ единица переноса из старшего разряда.

Если единицу пересоса из старшего разряда игнорировать, то результат сложения неверный: 11-7=3. Чтобы получить верный результат, необходимо единицу переноса добавить к младшему разряду результата: 0.1011+1.1000=0.0011+0.0001=0.0100 (11-7=4).

Следовательно,

- представление 0 в обратном коде неоднозначно;

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

В дополнительном коде положительное число представляется также, как в прямом и обратном кодах, т.е. при N>0,  = 0 aaaaaaa.

Чтобы получить дополнительный код отрицательного числа:

1) надо взять его положительную форму (взять прямой код положительного числа);

2) обратить каждый бит (иначе говоря, заменить в представлении числа 0 на 1 и 1 на 0);

3) добавить к полученному числу 1 младшего разряда. Например, представим в дополнительном коде число-32:

1) положительная форма числа –0.00100000;

2) обратим биты –1.11011111;

3) добавим 1 —1.11011111 +0.00000001

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

Достоинства такого кода заключается в том, что нуль однозначно представляется кодом 0,0000....0 и, кроме того, операцию вычитания можно заменить операцией сложения.

Недостаток такого представления - при использовании дополнительного кода отрицательное число становится трудно расшифровать. Однако дело облегчается тем, что положительную форму отрицательного числа в дополнительном коде можно получить аналогично вышеописанной методике, выполнив пункты 2 и 3. Проверим на рассмотренном выше примере:

2) обращаем биты 000011111;

3) добавляем 1 + 0.00000001 получим       0.00100000.

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

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

Таблицы для двоичной арифметики будут следующими:

Сложение

0+0=0, 0+1=1, 1+0=1, 1+1=0+единица переноса, 1+1+единица переноса=1+единица переноса;

Вычитание

0-0=0, 1-0=1, 0-1=1+единица заема;

Умножение

0*0=0, 1*0=0, 0*1=0, 1*1=1.

Сложение многоразрядных целых двоичных чисел производится по описанным выше правилам и с учетом переноса или заема единицы из предыдущего разряда. Если из старшего разряда представления многоразрядного целого числа получается единица переноса, такая ситуация называется переполнением разрядной сетки. Большинство программ обработки информации на языках высокого уровня в такой ситуации выдают и прекращает обработку В программах на Ассемблере программист должен сам в своей программе выявлять такие ситуации переполнения и предусматривать соответствующую обработку. При этом программист должен руководствоваться следующими правилами:



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 98; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.26.176 (0.007 с.)