Двоичная арифметика выполняется в дополнительном коде, что связано с некоторыми особенностями АЛУ. Вообще отрицательные числа можно представить в: - прямом коде: пишется то же число, только в старший (знаковый) разряд записывается "1", что соответствует отрицательному числу. -(0000010100) = 1000010100(пр.код) - это наиболее естественная с точки зрения арифметики форма представления отрицательных чисел; - обратном коде: все разряды числа инвертируются, в знаковый разряд пишется "1". -(0000010100) = 1111101011(обр.код); - дополнительном коде: к обратному коду отрицательного числа прибавляется единица. -(0000010100) = 1111101100(доп.код);
Отрицательное число, представленное в дополнительном коде, в прямой код можно преобразовать через обратный код: - из числа в дополнительном коде вычесть "1" (или, если нужно выполнить преобразование аппаратно в дополнительном коде, а не просто "в уме для себя" то прибавить 1111111111 - доп.код минус единицы); - полученное число в обратном коде проинвертировать поразрядно, не трогая старший. знаковый разряд - получите отрицательное число в прямом коде. P.S.: понимаю, что автор темы, заглохшей месяц назад, вряд ли нуждается в ответе, но ведь кто-то может и через поиск наткнуться на эту страничку.
|