文章目录
2.1 数制和数码
2.1.1 进位计数制及其相互转换
计算机内部所有信息都用二进制进行编码,原因在于:
- 二进制只有两种状态,使用具有两个稳定状态的物理器件就可以表示二进制数的每一位,制造成本低
- 二进制位1和0正好和逻辑“真”和“假”对应,为计算机实现逻辑运算和程序中的逻辑判断提供便利
- 二进制编码和运算规则简单,通过逻辑门电路能方便地实现算术运算
进位计数法
常用十进制、二进制、八进制、十六进制
基数:每个数位用到不同数码个数称。例如十进制的基数为10
位权
一个 r r r进制数 K n K n − 1 K n − 2 . . . K 0 K − 1 . . . K − m K_nK_{n-1}K_{n-2}...K_0K_{-1}...K_{-m} KnKn−1Kn−2...K0K−1...K−m的数值可以表示为
K n ∗ r n + K n − 1 ∗ r n − 1 + K n − 2 ∗ r n − 2 + . . . + K − m ∗ r − m = Σ i = n − m K i ∗ r i K_n*r^n+K_{n-1}*r^{n-1}+K_{n-2}*r^{n-2}+...+K_{-m}*r^{-m}=\Sigma_{i=n}^{-m}K_i*r^i Kn∗rn+Kn−1∗rn−1+Kn−2∗rn−2+...+K−m∗r−m=Σi=n−mKi∗ri
r r r为基数, r i r^i ri为第 i i i位的位权
2 16 = 65536 2^{16}=65536 216=65536
2 15 = 32768 2^{15}=32768 215=32768
不同进制数的相互转换
二进制转换为八进制和十六进制
一位八进制对应三位二进制
一位十六进制对应四位二进制
1111000010.01101 转换为八进制和十六进制
00)11_1100_0010.0110_1(000 -> 3C2.68
00)1_111_000_010.011_01(0 -> 1702.32
任意进制数转换为十进制数
各位数码和他们的权值相乘,再把乘积相加,即可得到十进制数——按权展开相加
0b11011.1 = 16+8+2+1+0.5 = 27.5
十进制转换为任意进制数
- 对于整数,采用除基取余法,结果倒着写
- 对于小数,采用乘基取整法,结果正着写
123.6875转换为二进制数
整数部分123:
2|__123...1
2|___61...1
2|___30...0
2|___15...1
2|____7...1
2|____3...1
2|____1...1
0
123 = 0b1111011
小数部分0.6875:
0.6875
* 2
______
1.3750 1
0.375
* 2
_____
0.75 0
* 2
____
1.5 1
0.5
* 2
___
1 1
0
0.6875 = 0b0.1011
综上123.6875 = 0b1111011.1011
小数是离散的,并不是每个十进制数都可以准确地用二进制数表示,但每个二进制小数都可以用十进制表示
真值和机器数
真值是机器数所代表的实际值
2.1.2 BCD码(大纲已删除
四位二进制数表示一位十进制数。4位二进制可组合成16种情况,因此有6种冗余
- 8421码:有权码,位权分别为8 4 2 1。两个8421码相加结果大于1001,需要加6修正
- 2421码,有权码,位权分别为2 4 2 1。大于等于5的数最高位为1;小于5的数最高位为0(5的2421码为1011而不是0101
- 余3码:无权码,在8421码的基础上加上0011
2.1.3 定点数的编码表示
定点数:小数点的位置固定的数
反之为浮点数
机器数的定点表示
定点表示法用来表示定点小数和定点整数。
- 定点小数:纯小数,约定小数点在符号位之后,有效数值部分最高位之前
- 定点整数:纯整数,小数点在有效数值部分最低位之后
定点数编码表示法主要有以下四种:原码、补码、反码和移码
原码、补码、反码和移码
原码表示法
机器数最高位表示数的符号,其余各位表示数的绝对值
字长 n + 1 n+1 n+1位的原码小数可以表示的范围是: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n -(1-2^{-n})\leq{x}\leq{1-2^{-n}} −(1−2−n)</