Binary 帮助理解整数的二进制表示法?

Binary 帮助理解整数的二进制表示法?,binary,Binary,我试图理解这些插图,但有些部分我不理解: “但是计算机必须倒数负数” 为什么在二进制前面加1意味着计算机必须倒计时 “翻转位并添加1!” 加1是什么意思 呜呜声:你所说的叫做。你所说的叫做。我没有看到插图,但你可能在说二的补码表示法。(http://en.wikipedia.org/wiki/Two(补语) 为什么前面加1意味着计算机必须倒计时 由于搬运的工作方式,fffffffffff+1==0 和0-1==FFFFFFFF。所有位都被翻转,包括第一位。 如果简单地将负数定义为以1

我试图理解这些插图,但有些部分我不理解:

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

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

    • 加1是什么意思

呜呜声:

你所说的叫做。

你所说的叫做。

我没有看到插图,但你可能在说二的补码表示法。(http://en.wikipedia.org/wiki/Two(补语)

  • 为什么前面加1意味着计算机必须倒计时

    由于搬运的工作方式,
    fffffffffff+1==0
    0-1==FFFFFFFF
    。所有位都被翻转,包括第一位。 如果简单地将负数定义为以1位(80000000-FFFFFFFF)开头的负数,那么通过自然溢出进行加法就可以得到一个很好的统一行为

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

    ~x+1==-x;//始终为真


  • 我没有看到插图,但你可能在谈论二的补语表示。(http://en.wikipedia.org/wiki/Two(补语)

  • 为什么前面加1意味着计算机必须倒计时

    由于搬运的工作方式,
    fffffffffff+1==0
    0-1==FFFFFFFF
    。所有位都被翻转,包括第一位。 如果简单地将负数定义为以1位(80000000-FFFFFFFF)开头的负数,那么通过自然溢出进行加法就可以得到一个很好的统一行为

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

    ~x+1==-x;//始终为真


  • 这可能最容易通过示例来说明。以下是以二进制表示的-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。

    这可能是最容易通过示例显示的。以下是以二进制表示的-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。

    搜索:wiki 2的补充搜索:wiki 2的补充