-1

我想知道这个-

如果 A、B 是 16 位数字,C 是 8 位数字,我需要多少位来存储结果?32 还是 33?

而且,如果 C 是一个 16 位数字呢?然后怎样呢 ?

如果我能得到解释如何和为什么的答案,我将不胜感激。

4

1 回答 1

2

为什么不直接取每个寄存器的最大值,然后检查结果呢?

如果所有寄存器都是无符号的:

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

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

如果所有寄存器都有符号,则 0xFFFF = -32767,但 0xFFFF * 0xFFFF 将与之前相同(负 * 负 = 正)。寄存器C会使结果比以前的结果小一点,但您仍然需要 32 位才能存储它。

于 2014-01-14T12:08:15.297 回答