负数如何用32位有符号整数表示?

Ahm*_*rid 14 binary numbers

负数如何用32位有符号整数表示?它是两个还是一个补码?或者左边的最后一点就像一面旗帜?例如:( - 10)

Kri*_*son 17

如今,大多数计算机对签名整数使用两个补码,但它可能因硬件架构,编程语言或其他特定于平台的问题而异.

对于二进制补码表示,最重要的("最左边")位称为符号位,它将被设置为负整数并且清除非负整数.然而,它不仅仅是一个"旗帜".有关更多信息,请参阅Wikipedia文章.


yan*_*gao 6

我认为答案是0110,前面是 1 重复 28 次,因此它看起来像:

1111 1111 1111 1111 1111 1111 1111 0110;

脚步:

  1. 10 的位表示为:

    0000 0000 0000 0000 0000 0000 0000 1010;

  2. 0->1对于1->0所有位:

    1111 1111 1111 1111 1111 1111 1111 0101;

  3. 最后一位加 1,并传播到前面的位,完成!

    1111 1111 1111 1111 1111 1111 1111 0110;

===

可以通过加 10 来验证,所有位都为 0。如上所述,它是基于 2 的并且遵循二进制补码。