Обсуждение:Дополнительный код

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Необходимо пояснить приведенный пример программного преобразования:

byte b1 = 254; //11111110 (бинарное)
byte b2 = 121; //01111001 (бинарное)
int c = (int)Math.Pow(2,(sizeof(byte)*8)-1);  //2 возводится в степень 7. Результат: 10000000 (бинарное)
int b1Conversion=(c ^ b1) - c;  //Результат: -2. А фактически, двоичный дополнительный код.
int b2Conversion=(c ^ b2) - c;  //Результат остается 121, потому что знаковый разряд - нуль.

На мой взгляд, если ^ - исключающее или, то выражение: (c ^ bn) – c , будет давать результат равный bn, т.е. bnConversion == bn.

193.32.20.1 09:06, 19 июня 2009 (UTC)[ответить]

Дополнительный код десятичных чисел[править код]

Если продолжить таблицу по убыванию дополнительного кода, то после 6000 пойдёт 5999. Последнее будет уже положительным? ChimMAG 02:16, 20 января 2015 (UTC)[ответить]

Нет. Самым большим положительным числом будет 4999, а самым отрицательным -- 5000. --82.69.159.206 13:54, 20 сентября 2017 (UTC)[ответить]