我想知道这个 -
如果A,B是16位数字而C是8位,那么我需要多少位来存储结果? 32或33?
而且,如果C是16位数呢?那么呢?
如果我得到答案并解释了这些方法和原因,我将不胜感激。
答案 0 :(得分:2)
为什么不为每个寄存器取最大值,并检查结果?
如果所有寄存器都是无符号的:
0xFFFF * 0xFFFF + 0xFF = 0xFFFE0100 = // 32 bits are enough
0xFFFF * 0xFFFF + 0xFFFF = 0xFFFF0000 // 32 bits are enough
如果所有寄存器都是有符号的,那么0xFFFF = -32767,但0xFFFF * 0xFFFF将与之前相同(负*负=正)。寄存器C
将使结果略小于前一个结果,但您仍需要32位才能存储它。