2016-05-27 2 views
0

Мне было интересно, может ли кто-нибудь объяснить мне, что происходит, когда мы добавляем двоичные числа.Добавление в беззнаковые и подписанные двоичные целые числа

Скажем, у нас есть 4 бита, 0b1111 и мы добавляем 1 в 0b1111. Я думаю, что двоичная кодировка должна быть 0b10000; однако, поскольку есть только 4 бита, бит изменится на 0b0000.

Мне было интересно, почему это происходит, потому что недостаточно места? Как бы добавить 1 к нему, если 0b1111 - целое число со знаком?

+0

Это причина переполнения, вы не можете показать номер 8 с битами 3 бит/4 бит – Alon

+0

Этот вопрос может потребоваться для разработки главы. Если вы хотите узнать все входы и выходы, проверьте [Неподписанные и подписанные целые числа] (http://kias.dyndns.org/comath/13.html) для получения дополнительных пояснений. – anonymous

ответ

1

если 0b1111 - это 4-значное значение без знака, с 4-разрядным хранилищем, оно имеет значение 15. Добавление 1 к нему даст вам 16, которые не могут быть сохранены в 4 битах. Сброс битов и 0b0000 сохраняется, что дает результат 0.

Теперь, если 0b1111 - это подписанное 4-битное значение с 4-разрядным хранилищем. он обычно хранится в представлении комплемента двух. Он имеет диапазон от -8 до +7. 0b1111 даст вам -1. (См. here о том, как конвертировать.) Добавление одного к тому, что дает 0.

Смежные вопросы