带符号数的表示方法:二进制数最高位表示数符,其余位表示数值。
最高位 0:+ 1:-
例:00000100表示+4 10000011表示-3
1.原码
尾数部分直接表示数值本身绝对值:此称原码表示法。
表达式为
例:n=8,x=+4,则[x]原=00000100
n=8,x=-3,则[x]原=27-(-00000011)=10000011
存在两种表示方式:[x]原=00000000 或 x=+0
[x]原=10000000 或 x=-0
2.补码
二数相减,用电路实现减法,结构极为复杂。实际实现时,用加法器就可完成减法。加法器容易制作,故运算更加方便。用8位二进制数表示一个带符号数,最高位是符号位,剩下7位表示数值。
当x≥0时,[x]补是x的本身值,最高位为0;
当x<0时,[x]补=28+x。
例:①x=+0000101B,[x]补=00000101B;
②x=-0000101B,[x]补=100000000B+(-0000101B)=11111011B。
对于负数x,求[x]补的简单方法:绝对值变反加1,再在最高位添1。
例:二进制补码的简明方法。(www.daowen.com)
设y=-0000010B(-2+) [y]补=11111101B,再加1,得:11111110B
设y=-0000110B(-6+) [y]补=11111010B
已知[X]补,求X。 正数:X即[X]补,只是最高位0变成+;负数:数值变反加1,再添负号(-)。
例:已知[X]补=11111010B 数值变反:0000101B
加1:0000110B
添加符号:-0000110B
例:利用补码计算 14-32=14+(-32)=-18
x=14=+0001110B,[x]补=00001110B;
y=-32=-0100000B,[y]补=11100000B;
[x+y]补=[x]补+[y]补=00001110B+11100000B=11101110B。
x+y=-0010010B=-(16+2)=-18。
对n位字长的二进制数,最高位仍为符号位。-128是特殊情况:最高位既是数符位又是数值位。8位二进制数可表示带符号数数值范围为:
00000000B~01111111B 10000000B~11111111B
计算机和PLC加减运算均以补码形式出现,当两个正数相加(或一个正数减去一个负数),和(或差)不能超过+127,否则结果变为负;当两个负数相加(或一个负数减去一个正数),和(或差)不能小于-128,否则结果变为正,此时称为溢出。
3.BCD码
实际应用中,一般计算问题的原始数据大多采用十进制数,人们为计算机设计了一种用二进制数为它编码,该编码称BCD码(Binary Coded Decimal)。BCD是二进制编码的十进制数的缩写,BCD码用四位二进制数表示一位十进制数(如表5.1所示),每一位BCD码允许的数值范围为2#0000~2#1001,对应于十进制数0~9。四位二进制数共有16种组合,有6种组合(2#1010~2#1111)没有在BCD码中使用。
BCD码的最高位二进制数用来表示符号,负数为1,正数为0。BCD码各位之间的关系是逢十进一。一般令负数和正数的最高4位二进制数分别为1111和0000。一个字节的BCD码可表示数值范围为0~99,16位BCD码的范围为-999~+999,32位BCD码的范围为-9999999~+9999999。
BCD码运算时,每半个字节结果不超过9则不用修正,超过9则加6。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。