Добавление к целым числам без знака и со знаком

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам