有符号数处理


有符号数处理 (正體)

Free Web Hosting with Website Builder

在日常生活,负数可在最前方加上负号“-”来表示。然而电脑为了计算上的方便,要以其他系统来表示有符号的整数。下面介绍的方法都是基于二进制的。

这些用来表示负整数的方法,最高位元都为符号位(sign bit),正数用一般二进制方法表示,正数的最高位元都是0。

二进制补码

又叫二的补数(two's complement),是现时电脑系统内最常用来表示正负整数的方法。

设n为字长。若a为正整数,将a和-a的二进制补码加起,结果必为0(00...0)。

因此,电脑最大能表示2n − 1 − 1,最小能表示 − 2n − 1

例如3位二进制补码:

二進制補碼 十位數
  011        3
  010        2
  001        1
  000        0
  111       -1
  110       -2
  101       -3
  100       -4

这套系统对电脑的优势可考虑下面的例子:在4位二进制补码系统,计算3 (0011)加 -1 (1111)。表面上,答案是10010,但摒除了最左方多出的第5位元后,便得到正确的0010。

二进制反码

又叫一的补数(one's complement)。负数是对相应的正数bitwise NOT。因此,它最大可表示2n − 1 − 1,最小只可表示 − 2n − 1 + 1。0可用00...0或11..1。

二進制反碼 十位數
  011        3
  010        2
  001        1
  000       +0
  111       -0
  110       -1
  101       -2
  100       -3

在二进制反码进行加法运算,整个数要加1才得出正确的结果。考虑−1 (110) 加 +2 (010),结果是000,整个数再加1,答案是1 (001)。又例如-1 (110)加+3 (011),结果是001,再加1,得2 (010)。

符号数值表示法

英文sign-and-magnitude。负数,除去符号位,其他都和相应的正数一样。因此,它最大可表示2n − 1 − 1,最小可表示 − 2n − 1 + 1

符號數值 十位數       
  011        3    
  010        2    
  001        1    
  000       +0    
  100       -0    
  101       -1    
  110       -2    
  111       -3






Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History