计算机组成原理-数制与编码(进制转换)

前言

学习视频: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} knkn1....k2k1k0.k1k2k3

其对应的十进制数字位: 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+kn1×rn1+...+k2×r2+k1×r1+k0×r0+k1×r1+k2×r2+k3×r3

十进制 --> 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+kn1×rn1+...+k2×r2+k1×r1+k0×r0+k1×r1+k2×r2+k3×r3

整数部分 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+kn1×rn1+...+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×rn1+kn1×rn2+...+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} k1×r1+k2×r2+k3×r3

此时处理方法和整数部分类似,将小数部分乘以r,此时的整数部分即为r进制对应的数字,求得到的数位从高位开始,例如 k − 1 k_{-1} k1 k − 2 k_{-2} k2 k − 3 k_{-3} k3

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

四进制、八进制、十六进制 --> 二进制

每一位写成对应的二进制数字即可~

真值和机器数

真值:符合人类习惯的数字
机器数:数字实际存到机器里的形式,正负号需要被“数字化”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuanbaoQiang

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值