负位的影响

时间:2014-08-23 17:55:53

标签: bit negative-number

负面位如何工作?

为什么负数位允许负数的绝对值1大于正数(2的恭维)?

为什么不将这个位读入2 ^ x,其中c是位数?

我只是不明白,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

存储在计算机中的所有东西都只是一堆。人类建立的惯例将意义归于那些位。例如,根据ASCII标准,01000001可能代表A

另一个例子,10100100可能被解释为ISO-8859-1中的¤(通用货币符号)或ISO-8859-15中的(欧元符号)。

类似地,如果这些位应该以二进制补码形式存储有符号数,则数字的第一位可以被解释为负符号位。我们可以选择将10100100视为无符号字节(一百六十四)或带符号字节(负九十二)。

具体来说,将10100100解释为无符号数是很简单的:

  

1 * 2 ^ 7 + 0 * 2 ^ 6 + 1 * 2 ^ 5 + 0 * 2 ^ 4 + 0 * 2 ^ 3 + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 0 * 2 ^ 0

要将10100100解释为二进制补码形式的带符号数字,请注意按照惯例,第一位表示该数字为负数,因此以下过程开始执行:

  
      
  • 将位反转为01011011。
  •   
  • 0 * 2 ^ 7 + 1 * 2 ^ 6 + 0 * 2 ^ 5 + 1 * 2 ^ 4 + 1 * 2 ^ 3 + 0 * 2 ^ 2 + 1 * 2 ^ 1 + 1 * 2 ^ 0 = 91
  •   
  • 取消并减去一个:-91 - 1 = -92。
  •   

答案 1 :(得分:0)

From wikipedia :

如果有两个补码,则没有两个0的表示形式:

例如,假设您有一个以3位编码的有符号整数:

  • 000 => 0
  • 001 => 1
  • 010 => 2
  • 011 => 3
  • 100 => -4
  • 101 => -3
  • 110 => -2
  • 111 => -1

使用一个补码,000和111都代表0,你的界限将是-3:3

  • 000 => 0
  • 001 => 1
  • 010 => 2
  • 011 => 3
  • 100 => -3
  • 101 => -2
  • 110 => -1
  • 111 => -0(实际上是0)