在实际控制过程中,数是有正有负的,而计算机只能识别0、1两种信息,那么正、负数在计算机中如何表示呢?
1.机器数与真值
机器数是指机器中数的表示形式。它将数值连同符号位一起数码化,表示成一定长度的二进制数,其长度通常为8的整数倍。机器数通常有两种:有符号数和无符号数。有符号数的最高位为符号位,代表了数的正负,其余各位用于表示数值的大小;无符号数的最高位不作为符号位,所有各位都用来表示数值的大小。
真值是指机器数所代表的实际正负数值。
有符号数的符号数码化的方法通常是将符号用“0正1负”的原则表示,并以二进制数的最高位作为符号位。
2.有符号数的表示方法
有符号数的表示方法有原码、反码和补码3种。以下均以长度为8位的二进制数表示有符号数。
(1)原码表示法
将8位二进制数的最高位(D7位)作为符号位(0正1负),其余7位D6~D0表示数值的大小。
例如:+55的原码为 0 0110111B
-55的原码为 1 0110111B(www.xing528.com)
有符号数的原码表示范围为-127~+127(FFH~7FH),其中0的原码有两个00H和80H,分别是+0的原码和-0的原码。原码表示简单,与真值转换方便,但进行加、减运算时电路实现较为繁杂。
(2)反码表示法
正数的反码与原码相同,但负数的反码其符号位不变,其余各数值位按位取反。
例如:+0的反码为 0 0000000B; +127的反码为 0 1111111 B
-0的反码为 1 1111111 B; -127的反码为 1 0000000 B
有符号数的反码表示的范围为-127~+127,其中0的反码与原码类似,也有两个值。
(3)补码表示法
正数的补码与原码相同,负数的补码等于其反码加1(即相应数值的原码按位取反,再加1)。
例如:-127的补码为 1 0000001B;-1的补码为 1 1111111B。
有符号数补码表示的范围为-128~+127,其中0的补码只有一种表示,即+0=-0=00000000。当有符号数用补码表示时,可以把减法转换为加法进行计算。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。