Вопрос 2 дополнения - PullRequest
       25

Вопрос 2 дополнения

1 голос
/ 17 апреля 2011

У меня есть вопрос, связанный с дополнением 2. Скажем, у меня есть 16-битное шестнадцатеричное со знаком в представлении дополнения 2 например, взять 0xfaa

если это 16 бит, мне нужно расширить его, потому что теперь он имеет только 12 бит. Я знаю, что должен расширить левую сторону, чтобы она превратилась в 0xffaa.

это означает, что мой номер отрицательный, это правильно?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Если я понимаю ваш вопрос, то вы правы.

Если это 12-битное отрицательное число, дополняющее два, то вы берете старший бит - бит 11, как его обычно называют, - и копируете его во все биты слева от него, чтобы заполнить старшие 4 бита. его 16-битного эквивалента. Ваше 12-битное значение - 0xfaa - становится 16-битным значением 0xffaa, как вы и сказали в своем вопросе.

В двоичном формате 12-разрядное значение равно

    111110101010
    ^
    +---- bit 11 

и становится 16-битным значением

 1111111110101010
 ^   ^
 |   +-------- bit 11 
 +------------ bit 15

То, что два слова имеют разную длину, никоим образом не меняет того факта, что эти два числа равны.

0 голосов
/ 17 апреля 2011

Вы бы сделали самую значимую цифру 0, так что это будет 0x0faa. Если вы предполагаете, что f идет туда, вы изменили значение числа.

...