Голосование

За какой срок реально продвинуть сайт в TOP-10 Yandex по НЧ запросу ?
 

Поиск по сайту

Вычитание двоичных чисел со знаком

Вычитание двоичных чисел со знаком

Здесь все несколько сложнее. Микропроцессору незачем иметь два устройства – сложения и вычитания. Достаточно наличия только одного – устройства сложения. Но для вычитания способом сложения чисел со знаком в дополнительном коде необходимо представлять оба операнда – и уменьшаемое, и вычитаемое. Результат тоже нужно рассматривать как значение в дополнительном коде. Но здесь возникают сложности. Прежде всего они связаны с тем, что старший бит операнда рассматривается как знаковый. Рассмотрим пример вычитания 45 – (-127).

Пример

Вычитание чисел со знаком 1

45 = 0010 1101

-

-127 = 1000 0001

=

-44 = 1010 1100

Судя по знаковому разряду, результат получился отрицательный, что, в свою очередь, говорит о том, что число нужно рассматривать как дополнение, равное —44. Правильный результат должен быть равен 172. Здесь мы, как и в случае знакового сложения, встретились с переполнением мантиссы, когда значащий разряд числа изменил знаковый разряд операнда. Отследить такую ситуацию можно по содержимому флага переполнения of. Его установка в 1 говорит о том, что результат вышел за диапазон представления знаковых чисел (т. е. изменился старший бит) для операнда данного размера, и программист должен предусмотреть действия по корректировке результата.

Пример

Вычитание чисел со знаком 2

-45–45 = -45 + (-45)= -90.

-45 = 11010011

+

-45 = 11010011

=

-90 = 1010 0110

Здесь все нормально, флаг переполнения of сброшен в 0, а 1 в знаковом разряде говорит о том, что значение результата – число в дополнительном коде.

 
 Яндекс цитирования 2008 Soft-Uprating.Ru ©  Все права защищены.

Партнеры и друзья сайта
расчет банковского вклада