提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
第二章 计算机中的数制和编码
一、无符号数的表示与运算
1.无符号数的表示
(1)十进制(D):逢十进一
(2)二进制(B):逢二进一
(3)十六进制(H):逢十六进一
2.转换
(1)十进制转为R进制:
- 整数部分:除R取余,倒记余数
- 小数部分: 乘R取整,正记整数
(2)R进制转为十进制:将R进制数按权展开求和
二、带符号数的表示及运算
1.机器数
最高位为符号位,0代表正数,1代表负数
如机器字长为n:
- 原码:-(2^(n-1) -1)~
2^(n-1)-1 - 反码:正数的反码与原码相同;负数的反码,符号位不变,其余位取反。
-(2^(n-1) -1)~
2^(n-1)-1 - 补码:正数的补码与原码相同;负数的补码为反码+1。-2^(n-1) ~
2^(n-1)-1
2.真值与机器数间的转换
- 原码:按权展开求和,根据符号位判断正负
- 反码:先转换为原码–>真值
- 补码:先转换为原码–>真值
3.补码的加减运算
1.直接用补码形式进行加法运算,结果也为补码形式,只要不溢出就正确,由高位向更高位的进位会自动丢失,而不影响计算结果。
2.直接用补码形式进行减法运算,结果也为补码形式,只要不溢出就正确,由高位向更高位的进位会自动丢失,而不影响计算结果。
两个异号数相加或两个同号数相减,结果不会溢出。仅当两个同号数相加或两个异号数相减时,才有可能发生溢出。
三.信息的编码
二进制编码的十进制数(BCD编码)
引用老师讲的一句话,BCD码是披着二进制皮的十进制数。所以BCD码实际上表示十进制数。即将一位十进制数0~9用4位二进制码的组合来表示。
- 压缩型
用一个字节表示两位十进制数。(两位10进制数:一共8位) - 非压缩型
用一个字节表示一位十进制数。高四位是0000,低四位用0000~1001表示。 (两位10进制数:一共16位) - 部分8421BCD编码
十进制数 | 压缩型BCD码 |
---|---|
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
4 | 00000100 |
5 | 00000101 |
6 | 00000110 |
7 | 00000111 |
8 | 00001000 |
9 | 00001001 |
10 | 00010000 |
11 | 00010001 |
4.修正问题:运算时会发生进位,但是正常情况应该是逢十进一,而计算机按二进制运算,每4位一组,与16进制类似,为逢16进1。所以当相加结果超过9时将比正确结果少6,因此要加6修正。相当于产生进位加了16,但是实际进位只是加10,所以需要加6对结果修正。