Answers:
用这些术语考虑一下。以2位数字加上前面的符号:
000 = 0
001 = 1
010 = 2
011 = 3
现在让我们来谈谈负面因素:
111 = -1
110 = -2
101 = -3
等等,我们还有
100 ...
它必须为负,因为符号位为1。因此,从逻辑上讲,它必须为-4。
(编辑:正如WorldEngineer正确指出的那样,并非所有的编号系统都以这种方式工作-但您所要求的编号系统却可以。)
因为在整数范围内没有两类数字,而是三类:负数,零和正数。零必须占用一个槽(不能代表零...是不切实际的……),因此,正类或负类必须放弃一个槽。通常,必须做出牺牲的通常是正范围,这一事实在一定程度上是任意的,但是在位操作的层面上,某些事情使此决定变得更加方便。
基本上有三种表示二进制有符号整数的方式:2的补码,1的补码和符号幅度。(很久以前,Biquinary沿用了“渡渡鸟”的风格。)
1的补码和符号幅度有两个零值+0和-0,每个都有唯一的表示形式。2的补码只有一个零值和一个表示。
现在,一个N位的字段可以编码2 ^ N个值。减去2的补数,您将得到2 ^ N-1 = 2 ^(N-1)+ 2 ^(N-1)+1。由于零的表示形式都是零位,而+符号是零,符号位设为1的情况下,还会有另一种可能的非零表示形式。
这是说2的补数表示-(2 ^(N-1)).. +(2 ^(N-1)-1)范围内的值的一种冗长的方法。
如果要进行整数数字信号处理计算,则1的补码实际上比2的补码具有优势。1的补数运算本质上会截断为零。2的补码截断为-infinity。我以一种艰难的方式学到了这一点...