
在日常生活,负数可在最前方加上负号“-”来表示。然而电脑为了计算上的方便,要以其他系统来表示有符号的整数。下面介绍的方法都是基于二进制的。
这些用来表示负整数的方法,最高位元都为符号位(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