Алгебраическое представление двоичных чисел
Знак числа обычно кодируется двоичной цифрой, при этом:
код 0 означает знак + (плюс);
код 1 — знак - (минус).
Для алгебраического представления чисел, т. е. для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды:
• прямой код числа;
• обратный код;
• дополнительный код.
При этом два последних кода позволяют заменить неудобную для компьютера операцию вычитания на операцию сложения с отрицательным числом. Дополнительный код обеспечивает более быстрое выполнение операций, поэтому в компьютере чаще всего применяется именно он.
Прямой кодчисла N (обозначим [N]пр).
Пусть N= а1, а2, а3, •••, ат, тогда:
при N>0, [N]пр = 0, а1, а2, а3, -, ат,
при N< 0, [N]пр=1, аь а2, аъ, ..., ат,
при N= 0 имеет место неоднозначность [0]пр = 0, 0 ... = 1, 0 ....
Если при сложении в ЭВМ оба слагаемых имеют одинаковый знак, то операция сложения выполняется обычным путем. Если при сложении слагаемые имеют разные знаки, то сначала необходимо выявить большее по абсолютной величине число, из него произвести вычитание меньшего по абсолютной величине числа и разности присвоить знак большего числа.
Выполнение операций умножения и деления в прямом коде выполняется обычным образом, но знак результата определяется по совпадению или несовпадению знаков участвовавших в операции чисел.
Операцию вычитания в этом коде нельзя заменить операцией сложения с отрицательным числом, поэтому возникают сложности, связанные с займом значений из старших разрядов уменьшаемого числа. В связи с этим прямой код в ЭВМ почти не применяется.
Обратный код числа N, обозначим [N]о6р.
Пусть N = а 1, а2> аъ, ..., аm, и b обозначает инверсию а, т. е. если а = 1, то b = 0, и наоборот. Тогда:
при N> 0, [N]o6p = 0, аи а2, а2, ..., ат;
при N< 0, [N]o6p = 1, b1, b2, b3, ..., bт;
при N= 0 имеет место неоднозначность [0]обр = 0,00...О = 1,11..1.
Для того чтобы получить обратный код отрицательного числа, необходимо все цифры этого числа инвертировать, т. е. в знаковом разряде поставить 1, во всех значащих разрядах нули заменить единицами, а единицы нулями.
Например,
для N= 1011 [No6p = 0,1011;
для N= -1011 [N]o6p= 1,0100.
Дополнительный код числа N, обозначим [N]дon.
Пусть, как и выше, N=a1, a2, аъ, ..., ат и b обозначает величину, обратную а (инверсию а), т. е. если а= 1, то b = 0, и наоборот. Тогда:
при N>= 0, [N]дon = 0, a1, а2, а3, ..., ат\
при N<= 0, [N]дon = 1, a1, а2, а3, ..., ат + 0.00...1.
Для того чтобы получить дополнительный код отрицательного числа, необходимо все его цифры инвертировать (в знаковом разряде поставить единицу, во всех значащих разрядах нули заменить единицами, а единицы — нулями) и затем к младшему разряду прибавить единицу. В случае возникновения переноса из первого после запятой разряда в знаковый разряд к числу следует прибавить единицу в младший разряд.
Например,
для N= 1011, [N]дon = 0,1011;
для N = -1100, [N]aon= 1,0100;
для N= -0000, [N]aon =10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет.
Дата добавления: 2015-08-08; просмотров: 1182;