补码的劣势?

use*_*405 5 twos-complement

我正在阅读有关二进制补码的内容,我知道这种方法最有效,但也可能存在一些缺点。我找不到任何缺点,是否存在转换为二进制补码无法正确表示数字的情况?

use*_*ica 5

二进制补码很棒 - 这就是每个人都使用它的原因。最大的缺点是如果你试图否定最低的可表示值,你会得到溢出。对于一个人的补码或符号和大小,这不会发生。

  • @Dudeson:不可以。例如,在 32 位二进制补码中,可表示的最低值是 -2^31,而可表示的最高值是 2^31-1。可表示的最高值可以很好地取反,而取反最低可能值会产生溢出。在 C 或 C++ 中,这是未定义的行为;在大多数其他具有固定宽度有符号整数的语言中,否定 -2^31 使其保持不变。 (3认同)