-1

Мне было интересно об этом -Сколько бит мне нужно для хранения AB + C?

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

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

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

+0

Почему это произошло с понижением? – Floose

ответ

2

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

Если все регистры без знака:

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

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

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

+0

Как мне умножить FFFF и FFFF, чтобы получить то, что вы сказали? Когда я делаю бумагу и умножение карандаша, в определенные моменты я получаю 1 + 1 + 1 + 1 - что такое бит бит и бит бит здесь? – Floose

+0

Я сделал это с калькулятором Windows ... –

+0

А, да, мой другой вопрос был в том, что произойдет, если это будет подписанное представление? каков будет максимальное число, которое я могу сохранить тогда – Floose