首页 理论教育 二进制数正负数范围解析

二进制数正负数范围解析

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:对于多位的二进制数,要考虑正数和负数表达问题。一般用拿出最高位作为正负数的代表:0表示该数是正数,1表示为负数。负数的补码范围是正数的原码取反加一。原码是0000 0000~0111 1111,所以负数的范围应当是1 0000 0000~1000 0001,其中,1 0000 0000表达的是+0的补码,超出了8位二进制数长度,9位二进制代表的是128。即,-127~-1的补码范围是[1]111 1111~[1]000 0001,不包括[1]000 0000,也就是说[1]000 0000是空着没用的。或者,n位二进制数表达的范围是[-2n-1,+2n-1-1],n包括符号位。

对于多位的二进制数,要考虑正数和负数表达问题。一般用拿出最高位作为正负数的代表:0表示该数是正数,1表示为负数。例如,十进制的2,在8位长度的二进制中表达为

而-2则表达为

因此,8位二进制的范围为

-127~-0~+0~127(十进制)=11111111~00000000~10000000~01111111(二进制)。

显然,-0和+0不能都作为零。

负数的补码范围是正数的原码取反加一。原码是0000 0000~0111 1111(+0~+127),所以负数的范围应当是1 0000 0000~1000 0001,其中,1 0000 0000表达的是+0的补码,超出了8位二进制数长度,9位二进制代表的是128。1000 0001的原码是+127,将最高位作为符号位,可以理解为-1。同样,1000 0010的原码是+126,代表的含义是-2。(www.xing528.com)

对负数[1]000 0000 ~[1]111 1111(-0~-127)(注:[1]代表符号位,表示为负数)求补码,符号位不参与运算,从而得到负数的补码范围是[1]000 0000 ~[1]000 0001。而[1]000 0001作为补码,其原码是[1]111 1111(-127),依次往前推,可得到原码-1的补码为[1]111 1111。即,-127~-1的补码范围是[1]111 1111~[1]000 0001,不包括[1]000 0000,也就是说[1]000 0000是空着没用的。

这样,考虑到只有8位字长,而不是9位二进制位长,因此,可以把[1]000 0000理解为-128,而避免要用1 0000 0000(9位长度)代表-128。

另一方面,(-127)+(-1)=[1]111 1111+ [1]000 0001=[1]000 0000(注:[1]代表符号位,表示为负数,两个负数相加,符号位不参与运算),也验证了[1]000 0000 可以作为-128。因此,-0就是-128。+0仍代表0。

可见,8位二进制的范围为-128~0~127,即[-128~127]。

同理,n位二进制数表达的范围是[-2n,+2n-1],而不是[-2n,+2n],也不是[-2n-1,+2n-1]。这里的n位不包括符号位。

或者,n位二进制数表达的范围是[-2n-1,+2n-1-1],n包括符号位。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈