【问题标题】:Help understanding Binary Representation for Integers?帮助理解整数的二进制表示?
【发布时间】:2010-12-29 08:46:57
【问题描述】:

我正在努力理解这些插图,但有些部分我不明白:

  • “但是计算机必须倒数计算负数”

    • 为什么在二进制前面加 1 意味着计算机必须倒数?
  • “翻转位并加1!”

    • 加 1 是什么意思?

哎呀:http://csillustrated.berkeley.edu/PDFs/integer-representations.pdf

【问题讨论】:

  • 搜索:wiki 2's supplement

标签: binary


【解决方案1】:

这可能是最容易举例说明的。以下是以二进制表示的从 -4 到 4 的数字:

4   0000 0100
3   0000 0011
2   0000 0010
1   0000 0001
0   0000 0000
-1  1111 1111
-2  1111 1110
-3  1111 1101
-4  1111 1100

假设我们想要从 1 变为 -1。我们首先翻转 1 的所有位

1 0000 0001
  flip bits
-----------
  1111 1110

然后我们加一个1:

  1111 1110
  +       1
-----------
  1111 1111

我们现在有 -1。

【讨论】:

    【解决方案2】:

    我没有看到插图,但您可能在谈论 Two 的补码表示。 (http://en.wikipedia.org/wiki/Two's_complement)

    1. 为什么前面加 1 意味着计算机必须倒数?

      由于携带方式,FFFFFFFFF + 1 == 00 - 1 == FFFFFFFF。所有位都被翻转,包括第一位。 如果您简单地将负数定义为以 1 位 (80000000 - FFFFFFFF) 开头的负数,那么您会得到一个很好的统一行为,可以自然溢出。

    2. 翻转位并加 1:在 2 的补码中,这会否定一个数字

      ~x+1 == -x; // always true

    【讨论】:

      【解决方案3】:

      你说的是signed integers

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-18
        • 2011-05-29
        • 2011-04-29
        • 1970-01-01
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多