Алгебраическое представление двоичных чисел
Знак числа обычно кодируется двоичной цифрой, при этом код 0 означает знак + (плюс), код 1 — знак – (минус). Для алгебраического представления чисел, то есть для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды:
l прямой код числа;
l обратный код числа;
l дополнительный код числа.
При этом два последних кода позволяют заменить неудобную для компьютера операцию вычитания на операцию сложения с отрицательным числом.
Дополнительный код обеспечивает более быстрое выполнение операций, поэтому в компьютере применяется чаще именно он.
1. Прямой код числа N — [N]пр. Пусть N = a a a ... a.
l если N > 0, то [N]пр = 0, a a a ... a;
l если N < 0, то [N]пр = 1, a a a ... a;
l если N = 0, то имеет место неоднозначность: [0]пр = 0,0... или =1,0...
Обобщая результаты, получим:
.
Если при сложении оба слагаемых имеют одинаковый знак, то операция сложения выполняется обычным путем. Если при сложении слагаемые имеют разные знаки, то сначала необходимо выявить большее по абсолютной величине число, произвести из него вычитание меньшего по абсолютной величине числа и разности присвоить знак большего числа.
Выполнение операций умножения и деления в прямом коде производится обычным образом, но знак результата определяется по совпадению или несовпадению знаков участвовавших в операции чисел.
Операцию вычитания в этом коде нельзя заменить операцией сложения с отрицательным числом, поэтому возникают сложности, связанные с заемом значений из старших разрядов уменьшаемого числа. В связи с этим прямой код в компьютере почти не применяется.
2. Обратный код числа N — [N]обр.
Обозначение а* означает величину, обратную а (инверсию а), то есть если а = 1, то а* = 0, и наоборот.
l если N > 0, то [N]обр =[N]пр = 0, a a ... a;
l если N < 0, то [N]обр = 1, a* a* ... a*;
l если N = 0, то неоднозначность, [0]обр = 0,00...0 или =1,11...1.
Для того чтобы получить обратный код отрицательного числа, необходимо все цифры этого числа инвертировать, то есть в знаковом разряде поставить 1, во всех значащих разрядах нули заменить единицами, а единицы нулями.
Например, число N = 0,1011, [N]обр = 0,1011. Число N = –0,1011, [N]обр = 1,0100. В случае, когда N < 0, [N]обр = 10 – 1 · 10–n + N, то есть [N]обр = 1,1111 + N.
Обобщая результаты, получим
.
3. Дополнительный код числа N — [N]доп.
l если N >= 0, то [N]доп = [N]пр = 0, a a ... a ;
l если N <= 0, то [N]доп = 1, a* a* ... a* + 0,0 0 ...1.
Для того чтобы получить дополнительный код отрицательного числа, необходимо все его цифры инвертировать (в знаковом разряде поставить единицу, во всех значащих разрядах нули заменить единицами, а единицы нулями) и затем к младшему разряду прибавить единицу. В случае возникновения переноса из первого после запятой разряда в знаковый разряд, к числу следует прибавить единицу в младший разряд.
Например, N = 0,1011, [N]доп = 0,1011; N = –0,1100, [N]доп = 1,0100; N = –0,0000; [N]доп = 10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет. Обобщая, можно записать:
.
СОВЕТ
Эмпирическое правило: для получения дополнительного кода отрицательного числа необходимо все цифры этого числа инвертировать, кроме последней (младшей) единицы и тех нулей, которые за ней следуют.
Дата добавления: 2016-04-02; просмотров: 1880;