我是目录🙈
前言
学习视频:2019 王道考研 计算机组成原理
推荐2019版本~
进制计数法
- 一进制:🐤
- 二进制:0,1(方便对应到物理器件的运行状态,例如高电平、低电平)
- 四进制:0,1,2,3
- 八进制:0,1,2,3,4,5,6,7
- 十进制:0,1,2,3,4,5,6,7,8,9
- 十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
基数:对应进制下所用到的不同符号的个数,二进制就是2,十进制就是10。
基数越小说明了,该进制下可以用更少的符号去存储数据。以乘法运算为例,对于十进制而言,两两相乘的情况有100种,但是在二进制中只有4种。因此对于机器而言,二进制更适合做运算。
进制间转换
任意进制—>十进制
对于一个十进制75,可以将其拆成:
75
70 + 5
7 × 1 0 1 + 5 × 1 0 0 7 \times 10^1 + 5 \times 10^0 7×101+5×100
=================>>>>>>>>>>>>可以看成每个位的数值 * 位所对应的权重 之和
比如在十进制中:
个数的权重就是 1 0 0 10^0 100
十位数的权重就是 1 0 1 10^1 101
百位数的权重就是 1 0 2 10^2 102
对于一个r进制数字(小数也可) k n k n − 1 . . . . k 2 k 1 k 0 . k − 1 k − 2 k − 3 k_nk_{n-1}....k_2k_1k_0.k_{-1}k_{-2}k_{-3} knkn−1....k2k1k0.k−1k−2k−3,
其对应的十进制数字位: k n × r n + k n − 1 × r n − 1 + . . . + k 2 × r 2 + k 1 × r 1 + k 0 × r 0 + k − 1 × r − 1 + k − 2 × r − 2 + k − 3 × r − 3 k_n \times r^n + k_{n-1} \times r^{n-1} + ... + k_2 \times r^2 + k_1 \times r^1 + k_0 \times r^0 + k_{-1} \times r^{-1} + k_{-2} \times r^{-2} + k_{-3} \times r^{-3} kn×rn+kn−1×rn−1+...+k2×r2+k1×r1+k0×r0+k−1×r−1+k−2×r−2+k−3×r−3
十进制 --> 2 n 2^n 2n进制
对于一个十进制数字 : k n × r n + k n − 1 × r n − 1 + . . . + k 2 × r 2 + k 1 × r 1 + k 0 × r 0 + k − 1 × r − 1 + k − 2 × r − 2 + k − 3 × r − 3 k_n \times r^n + k_{n-1} \times r^{n-1} + ... + k_2 \times r^2 + k_1 \times r^1 + k_0 \times r^0 + k_{-1} \times r^{-1} + k_{-2} \times r^{-2} + k_{-3} \times r^{-3} kn×rn+kn−1×rn−1+...+k2×r2+k1×r1+k0×r0+k−1×r−1+k−2×r−2+k−3×r−3
整数部分: k n × r n + k n − 1 × r n − 1 + . . . + k 2 × r 2 + k 1 × r 1 + k 0 × r 0 k_n \times r^n + k_{n-1} \times r^{n-1} + ... + k_2 \times r^2 + k_1 \times r^1 + k_0 \times r^0 kn×rn+kn−1×rn−1+...+k2×r2+k1×r1+k0×r0
将整数部分/基数r: k n × r n − 1 + k n − 1 × r n − 2 + . . . + k 2 × r 1 + k 1 × r 0 + k 0 k_n \times r^{n-1} + k_{n-1} \times r^{n-2} + ... + k_2 \times r^1 + k_1 \times r^0 + k_0 kn×rn−1+kn−1×rn−2+...+k2×r1+k1×r0+k0可以得到余数 k 0 k_0 k0,此时的 k 0 k_0 k0为r进制位的最低位的数字,
再次除/基数r,此时的余数为 k 1 k_1 k1,重复除r取余可以得到剩余的r进制的每一位的数字。直到除不尽为止(商为0的时候)。
小数部分: k − 1 × r − 1 + k − 2 × r − 2 + k − 3 × r − 3 k_{-1} \times r^{-1} + k_{-2} \times r^{-2} + k_{-3} \times r^{-3} k−1×r−1+k−2×r−2+k−3×r−3
此时处理方法和整数部分类似,将小数部分乘以r,此时的整数部分即为r进制对应的数字,求得到的数位从高位开始,例如 k − 1 k_{-1} k−1, k − 2 k_{-2} k−2, k − 3 k_{-3} k−3
75.3 --> 二进制
整数部分75
75/2 --> 37…1
37/2 --> 18 … 1
18/2 --> 9 … 0
9/2 --> 4 … 1
4/2 --> 2 … 0
2/2 --> 1 … 0
1/2 --> 0 … 1
小数部分0.3
0.3 * 2 = 0.6 = 0 + 0.6
0.6 * 2 = 1.2 = 1 + 0.2
0.2 * 2 = 0.4 = 0 + 0.4
0.4 * 2 = 0.8 = 0 + 0.8
0.8 * 2 = 1.6 = 1 + 0.6
…
所以十进制75.3D对应的二进制数字为1001011.01001…B
2 n 2^n 2n进制间的转换
二进制 --> 四进制、八进制、十六进制
两个二进制数可以表示一个四进制数。三个二进制数可以表示一个八进制数,四个二进制数可以表示一个十六进制数字
对于一个二进制数:1111000010.01101,可以进行进行分组转换。以小数点为分界线,向左右开始分,遇到位数不够的,自动补0。
四进制:11 11 00 00 10 . 01 10 10 —> 3 3 0 0 2 . 1 2 2
八进制:001 111 000 010 . 011 010 --> 1 7 0 2 . 3 2
十六进制:0011 1100 0010 . 0110 1000 --> 3 C 2 . 6 8
3C2.68H = 1111000010.01101B
( 3 C 2.68 ) 16 (3C2.68)_{16} (3C2.68)16 = ( 1111000010.01101 ) 2 (1111000010.01101)_2 (1111000010.01101)2
四进制、八进制、十六进制 --> 二进制
每一位写成对应的二进制数字即可~
真值和机器数
真值:符合人类习惯的数字
机器数:数字实际存到机器里的形式,正负号需要被“数字化”