Сколько бит мне нужно, чтобы хранить AB+C?

Мне было интересно об этом

Если A, B - 16-битные числа, а C - 8-битные, сколько бит мне нужно для сохранения результата? 32 или 33?

И что, если C был 16-битным числом? Что тогда?

Я был бы признателен, если бы я получил ответы с объяснением как и почему.

1 ответ

Почему бы вам просто не взять максимальное значение для каждого регистра и проверить результат?

Если все регистры не подписаны:

0xFFFF * 0xFFFF + 0xFF = 0xFFFE0100 = // 32 bits are enough

0xFFFF * 0xFFFF + 0xFFFF = 0xFFFF0000 // 32 bits are enough

Если все регистры подписаны, то 0xFFFF = -32767, но 0xFFFF * 0xFFFF будет таким же, как и раньше (отрицательный * отрицательный = положительный). регистр C сделает результат немного меньшим, чем предыдущий, но вам все равно потребуется 32 бита для его хранения.

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