-1

我在想这个 -我需要多少位来存储AB + C?

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

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

我将不胜感激,如果我得到了答案和解释的时间和时间。

+0

为什么这会得到downvoted? – 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

相关问题