Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道这个-
如果 A、B 是 16 位数字,C 是 8 位数字,我需要多少位来存储结果?32 还是 33?
而且,如果 C 是一个 16 位数字呢?然后怎样呢 ?
如果我能得到解释如何和为什么的答案,我将不胜感激。
为什么不直接取每个寄存器的最大值,然后检查结果呢?
如果所有寄存器都是无符号的:
0xFFFF * 0xFFFF + 0xFF = 0xFFFE0100 = // 32 bits are enough 0xFFFF * 0xFFFF + 0xFFFF = 0xFFFF0000 // 32 bits are enough
如果所有寄存器都有符号,则 0xFFFF = -32767,但 0xFFFF * 0xFFFF 将与之前相同(负 * 负 = 正)。寄存器C会使结果比以前的结果小一点,但您仍然需要 32 位才能存储它。
C