我需要多少比特来存储AB + C?

时间:2014-01-14 11:55:50

标签: computer-architecture arithmetic-expressions computer-algebra-systems

我想知道这个 -

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

而且,如果C是16位数呢?那么呢?

如果我得到答案并解释了这些方法和原因,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

为什么不为每个寄存器取最大值,并检查结果?

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

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

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

如果所有寄存器都是有符号的,那么0xFFFF = -32767,但0xFFFF * 0xFFFF将与之前相同(负*负=正)。寄存器C将使结果略小于前一个结果,但您仍需要32位才能存储它。