【问题标题】:Is a signed 16-bit integer the same as a two's complement 16-bit integer?带符号的 16 位整数是否与二进制补码 16 位整数相同?
【发布时间】:2016-03-22 04:20:19
【问题描述】:

我知道一个和二的补码整数之间的区别,但是我不确定带符号的 16 位整数是否与其中一个或两个相同。

希望是一个简单的是/否问题。

【问题讨论】:

  • 补充,而不是恭维。他们是不同的

标签: integer hardware signed twos-complement 16-bit


【解决方案1】:

有符号整数仅表示该类型可以存储负值。它没有说明有符号类型表示,它可以是 1 的补码、2 的补码或符号大小……即使是现在的 C 和 C++ 标准也不强制使用 2 的补码。但是有符号类型显然不能同时是 1 和 2 的补码

在现代系统中,仅使用 2 的补码(可能除了某些网络设备),但存在使用其他签名表示的旧系统,例如 UNISYS 2200 series

【讨论】:

    【解决方案2】:

    是的,说整数有符号与说它在标准计算机上使用二进制补码表示是一样的。

    【讨论】:

    • 错了!还有其他可用的签名表示
    • 是的,还有其他方法可以做到这一点,但绝大多数情况下计算机将使用二进制补码表示。这就是为什么我说“在您的标准计算机上”,尽管您说得对,我本可以更好地措辞。
    • “绝大多数”并不意味着“有符号 == 2 的补码”
    • 你是对的。我认为 OP 是在问现代计算机使用什么,而不是更字面地理解这个问题。谢谢指正。
    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2013-04-13
    相关资源
    最近更新 更多