Добавление к целым числам без знака и со знаком
Мне было интересно, если кто-то может объяснить мне, что происходит, когда мы добавляем двоичные числа.
Скажем, у нас есть 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.