Сколько бит мне нужно, чтобы хранить 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 бита для его хранения.