2013-05-05 8 views
-1

Я изо всех сил пытаюсь понять, как работает усечение при конвертации из беззнакового в дополнение к двум. Может кто-нибудь объяснить? (мой textook использует пример усечения 4-битного значения в 3-битное значение и говорит, что -1 становится -1, но -5 становится 3).Усечение в дополнении двух?

+0

это зависит от того, есть ли у вас значения без знака, знаковые значения и т. Д. ... есть ли у вас пример? – Bill

+0

Не зная, как объясняет ваш учебник, что заставляет вас думать, что любое объяснение здесь может быть понятным? Мне даже не ясно, что вы подразумеваете под «усечением». Если значение без знака, как источник может быть -1 или -5, как в вашем примере, они оба являются знаками со знаком? – Clifford

+0

Я думаю, что @Pascal Cuoq преуспел, чтобы понять и ответить на ваш вопрос, но если это действительно ответ, это не вопрос конверсии «без знака к двум», а скорее конверсия из более крупных двух дополнение к типу дополнений меньшего размера - в этом случае от 4 до 3 бит. В любом случае, это не «конверсия», а просто переинтерпретация битового шаблона. – Clifford

ответ

5

-1 представлены на четырех двоичных битов:

1 1 1 1 

(-1 всегда представлен в виде все биты 1 в 2 с дополнением).

В вашем учебнике «усечения» просто используется для обозначения (*) «отрезав бит (ы) высшего порядка»:

1 1 1 

В результате до сих пор все свои биты устанавливает так он по-прежнему представляет собой -1 - На этот раз версия дополнения 3-битного 2 -1.

-5 представлена ​​в 2-х с дополнением на 4 бита, как:

1 0 1 1 

отрубив бит высшего порядка:

0 1 1 

Мы остались с 3-битным представлением 3. Причина, по которой мы не могли получить -5, - это то, что величина -5 слишком велика, чтобы вписаться в 3-битный формат.

Номера с меньшей величиной, которые могут быть представлены 3 битами, не изменяются, когда бит более высокого порядка отрубается. Это относится к цифрам от -4 до 3.

(*) Обратите внимание, что обычно «усечение» означает сохранение наиболее значимых бит и удаление наименее значимых, особенно в контексте с плавающей запятой, где бит с массой меньше единицы, стираются при преобразовании в целое число с помощью «усечения». Выбор слов в книге OP очень сомнителен, если книга не написана на английском языке, а слова не переводятся точно на английский язык при переводе.

+1

Возможно, это имеет смысл довольно двусмысленного вопроса, но это дополнение к 4-битовому дополнению к преобразованию дополнения 3-битного двоичного кода (или, скорее, к интерпретации), а не к преобразованию дополнений без знака к двум. Возможно, это источник путаницы @ girlrockingguna. – Clifford

+0

@Clifford Я согласен с вами в том, что «-5 без знака» не позволяет легко убедиться в том, что задается. –

+0

Я не уверен, что усечение строго определяется как «отсечение бит (ы) высшего порядка»? По крайней мере, я склоняюсь к тому, что это означает, что это означает отрезать биты _lower_ (например, при работе с цифровым звуком). Я думаю, что, возможно, это слово чувствительно к контексту и может быть двусмысленным, если оставить неквалифицированным, какие биты вы удаляете. Если бы OP удалил нижние биты, они увидели бы другой результат. –