Вычитание шестнадцатеричной подписи против неподписанной - PullRequest
3 голосов
/ 24 марта 2012

Я должен сделать вычитание из двух 16-разрядных шестнадцатеричных чисел со знаком.C352 - 36AE.Какая разница между подписанным и неподписанным, когда речь заходит о математике с ними?Является ли единственным решением преобразование их в двоичное, выполнение вычитания со знаком, а затем преобразование ответа обратно в шестнадцатеричное?Спасибо.

Ответы [ 2 ]

1 голос
/ 02 июня 2016

Результат 16-разрядного вычитания со знаком или без знака всегда составляет 16 бит (является результатом побитового вычитания) плюс 17-й бит, причем 17-й бит является либо битом переполнения (вычитание со знаком), либо битом переноса (вычитание без знака) , Если у вас есть только 16-битный результат, у вас есть побитовое вычитание, а не 16-битное вычитание со знаком или без знака. Вместо указания знакового, беззнакового или побитового вычитания многие системы выдают все три результата одновременно. Позже вы будете использовать бит переполнения, если вы намеревались вычитать со знаком, бит переноса, если вы хотели вычитать без знака, или ни один из них для побитового вычитания. Обратите внимание, что многие люди не смотрят на 17-й бит, потому что они знают из диапазона входных данных, что им не нужно истинное 16-битное вычитание. Например, если я вычитаю число, которое, как я знаю, находится в диапазоне от 0 до 100, из числа, которое, как я знаю, находится в диапазоне от 1000 до 2000, мне не нужно истинное 16-битное вычитание, поэтому мне не нужно смотреть на 17-й бит , Примечание. Переполнение и перенос получаются по разным правилам и НЕ являются одинаковыми, но различие между ними уже объяснено в другом месте, поэтому я не буду повторять этот ответ здесь.

1 голос
/ 25 марта 2012

Вычитание одинаково для подписанного и без знака.Отличается то, как интерпретируются результаты.Числа без знака никогда не могут быть отрицательными:

0xffff имеет -1 подпись.0xffff - 65 535 без знака.

Это тот же номер.

http://en.wikipedia.org/wiki/Two%27s_complement

...