带符号二进制数的代码表示
-
用“+”、“-”表示正、负的二进制数称为符号数的真值,而把符号和数值一起编码表示的二进制数称为机器数或机器码。常用的机器码有原码、反码和补码三种。
-
用原码表示带符号二进制数时,符号位用0表示,1表示负;数值位保持不变。原码表示法又称为符号-数值表示法。
-
小数“0”的原码有正负之分,分别用0.0···0或1.0···0表示。
eg.x=+0.1011, y=-0.1011
[x]原=0.1011, [y]原=1.1011
ps:正数不变,负数0变1,去掉符号。 -
整数“0”的原码有正负之分,分别用00···0或10···0表示。
eg. x=+1011, y=-1011
[x]原=0,1011, [y]原=1,1011
ps:用逗号来区分一下,便于理解。 -
用反码表示带符号的二进制数时,符号位与原码相同,即用0表示正,用1表示负;数值为与符号位相关,整数的反码的数值为和真值位相同,而附属反码的数值为时真值的数值为按位变反。
-
小数“0”的反码有正负之分,分别用0.0···0或1.1···1表示。
eg.x=+0.1011, y=-0.1011
[x]反=0.1011, [y]反=1.0100 -
整数“0”的反码有正负之分,分别用00···0或11···1表示。
eg. x=+1011, y=-1011
[x]反=0,1011, [y]反=1,0100 -
用补码表示带符号的二进制数时,符号位与原码、反码相同,即用0表示正,1表示负;
-
小数“0”补码只有一种形式即0.00···0
eg.x=+0.1011, y=-0.1011
[x]补=0.1011, [y]反=1.0101
ps:负:符号位参与运算,且产生的进位丢掉,只需要剩下的。 -
整数“0”的补码只有一种形式即00···0
eg. x=+1011, y=-1011
[x]补=0,1011, [y]补=1,0101
补充:和的补码等于补码的和,运算时是否有溢出,需要进行真值验算。
如果x是负数,则x的补是x取反加一,x的反是x的补取反加一。
几种常用的编码
十进制数的二进制编码
BCD码:简称二-十进制代码。它既有二进制形式,又有十进制数的特点,便于传递、处理。
根据代码中的每一位是否有固定的权,将BCD码分为有权码和无权码两种。常用的BDC码有8421码、2421码和余3码3种。
- 8421码
eg. 十进制 :(258) 对应8421码:(0010 0101 1000)对应二进制:(10 0101 1000)
ps:8421码是一种有权码,十进制的8421码每一位数有四位,且前导零不可省略,注意与二进制进行区别。 - 2421码
eg. 十进制 :(258) 对应8421码:(0010 1011 1110)对应二进制:(10 0101 1000)
ps:2421码是有权码,并且不具备单值性,成为对9的自补代码 - 余3码
eg. 十进制:(256) 对应8421码:(0101 1000 1001)对应二进制:(10 0101 0110)
ps:余3码是无权码,且唯一,是对酒的自补代码。若进行十进制数相加时,修正方法:有进位加三,无进位减三。
可靠性编码
- 格雷码:特点是,任意两个相邻的数,其格雷码仅有一位不相同。注意,由二进制转换成格雷码,格雷码不是二进制码。
设二进制数为 B = B n − 1 B n − 2 ⋅ ⋅ ⋅ B i + 1 B i ⋅ ⋅ ⋅ B 1 B 0 B=B_{n-1}B_{n-2}···B_{i+1}B_i···B_1B_0 B=Bn−1Bn−2⋅⋅⋅Bi+1Bi⋅⋅⋅B1B0,则对应的格雷码为 G = G n − 1 G n − 2 ⋅ ⋅ ⋅ G i + 1 G i ⋅ ⋅ ⋅ G 1 G 0 G=G_{n-1}G_{n-2}···G_{i+1}G_i···G_1G_0 G=Gn−1Gn−2⋅⋅⋅Gi+1Gi⋅⋅⋅G1G0,则有:
G n − 1 = B n − 1 G_{n-1}=B_{n-1} Gn−1=Bn−1 ---------
G i = B i + 1 ⨁ B i G_i=B_{i+1}\bigoplus B_i Gi=Bi+1⨁Bi ------------ 0 ≤ i ≤ n − 1 0\leq i\leq n-1 0≤i≤n−1 - 奇偶校验码
由两部分组成,一是信息位,即需要传达的信息本身,可以是位数不限的一组二进制代码;二是奇偶校验位,它仅有一位。
两种编码方式:一种是使信息位和检验位中的“1”的个数为奇数,成为奇校验;另一种是是信息位和检验位中“1”的个数是偶数,成为偶校验。
注意:①奇偶校验码只有检错能力,没有纠错能力。②只能发现单错,不能发现双错。