【问题标题】:Two's Complement disadvantage?补码劣势?
【发布时间】:2013-09-23 05:27:15
【问题描述】:

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

【问题讨论】:

  • 我猜整个电子世界都依赖 2 的恭维来表示数字。这是一个完整的证明概念,只要您在可用内存的范围内工作,它就可以很好地工作。

标签: twos-complement


【解决方案1】:

Two 的补码很棒 - 这就是每个人都使用它的原因。最大的缺点是,如果您尝试否定可表示的最低值,则会出现溢出。有了补码或符号和大小,就不会发生这种情况。

【讨论】:

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

使用“两个补码”表示法,您无法将两个整数的大小与非常简单的逻辑运算符(在最低级别的硬件上)进行比较。这就是为什么 IEEE 浮点算术标准 (IEEE 754) 中的指数不是用“二补码”而是用“有偏”表示法表示的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2019-12-23
    • 2014-02-11
    • 1970-01-01
    • 2013-01-08
    • 2011-11-06
    • 2011-03-25
    相关资源
    最近更新 更多