数制与编码
=========================================
1.数制转换
八,十六进制转二进制
每1位8/16进制数都转化成3/4位二进制数
二进制转八,十六进制
整数部分:
自右往左3/4位二进制数
按权展开相加得到一位8/16进制数,
不足时补0
小数部分:
自左往右3/4位二进制数
按权展开相加得到一位8/16进制数,
不足时补0
二,八,十六进制转十进制
自左往右按权值展开相加
十进制转二,八,十六进制
整数部分:
除2/8/16取余,直到商为0,余数从下往上权值越来越小
小数部分:
取小数部分,乘2/8/16取整,从下往上权值越来越大
八进制十六进制互转
先转换成2/10进制
=========================================
2.带符号的二进制数的表示方法
原码
原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
=========================================
3.字符编码
8421BCD码
每四位二进制数表示一位十进制数
例如:
1000 0101 1001.0100 0111
表示 859.47
余3码
每四位8421码都加3即形成余3码
例如
859.47
用余3码表示即:1011 1000 1100.0111 1010
BCD编码的修正问题
BCD码在进行加/减运算时要考虑修正问题
修正方法:
当十进制数相加结果小于等于9时,不修正
当结果大于9或产生向高位进位十,均加6修正
例:
358+929
= 0011 0101 1000
+1001 0010 1001
= 1010 1000 0001
大于9 向前进位
+0110 0000 0110
= 10000 1000 0111
=========================================
4.可靠性编码
格雷(Gray)码
从一个代码变换为相邻的另一代码时,只有一位发生变化
Gray码–>二进制码
G n = B n G_n=B_n Gn=Bn
G i = B i + 1 ⊕ B i G_i=B_{i+1} \oplus B_i Gi=Bi+1⊕Bi
例:二进制码:0111
格雷码:0100
Gray码–>二进制码
B n = G n B_n=G_n Bn=Gn
B i = B i + 1 ⊕ B i B_i=B_{i+1} \oplus B_i Bi=Bi+1⊕Bi
例:二进制码:1010
格雷码:1100
奇偶校验码
奇偶校验码由两部分组成:信息位,校验位
信息位即传输的信息本身,校验位是附加的冗余位
编码方法
根据信息位1的个数配成奇数个1,构成奇校验
根据信息位1的个数配成奇数个2,构成偶校验
例:
信息位:10110,校验位:P
奇校验:p= 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1 = 0 1\oplus0\oplus1\oplus1\oplus0\oplus1=0 1⊕0⊕1⊕1⊕0⊕1=0
奇校验:p= 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 0 = 1 1\oplus0\oplus1\oplus1\oplus0=1 1⊕0⊕1⊕1⊕0=1
异或求解:奇数个1即为一,偶数个1即为0
校验方法
根据信息位,奇/偶校验求P’
若 P ⊕ P ′ P \oplus P' P⊕P′=0则传送正确,不然错误
即若P,P’相同说明传送正确
汉明校验码
循环冗余校验码
=========================================