Bootstrap

【408笔记】计算机组成原理第二章 数据的表示和运算

文章目录

2.1 数制和数码

2.1.1 进位计数制及其相互转换

计算机内部所有信息都用二进制进行编码,原因在于:

  1. 二进制只有两种状态,使用具有两个稳定状态的物理器件就可以表示二进制数的每一位,制造成本低
  2. 二进制位1和0正好和逻辑“真”和“假”对应,为计算机实现逻辑运算和程序中的逻辑判断提供便利
  3. 二进制编码和运算规则简单,通过逻辑门电路能方便地实现算术运算

进位计数法

常用十进制、二进制、八进制、十六进制
基数:每个数位用到不同数码个数称。例如十进制的基数为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} KnKn1Kn2...K0K1...Km的数值可以表示为
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 Knrn+Kn1rn1+Kn2rn2+...+Kmrm=Σi=nmKiri
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
十进制转换为任意进制数
  1. 对于整数,采用除基取余法,结果倒着写
  2. 对于小数,采用乘基取整法,结果正着写
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种冗余

  1. 8421码:有权码,位权分别为8 4 2 1。两个8421码相加结果大于1001,需要加6修正
  2. 2421码,有权码,位权分别为2 4 2 1。大于等于5的数最高位为1;小于5的数最高位为0(5的2421码为1011而不是0101
  3. 余3码:无权码,在8421码的基础上加上0011

2.1.3 定点数的编码表示

定点数:小数点的位置固定的数
反之为浮点数

机器数的定点表示

定点表示法用来表示定点小数和定点整数。

  1. 定点小数:纯小数,约定小数点在符号位之后,有效数值部分最高位之前
  2. 定点整数:纯整数,小数点在有效数值部分最低位之后

定点数编码表示法主要有以下四种:原码、补码、反码和移码

原码、补码、反码和移码

原码表示法

机器数最高位表示数的符号,其余各位表示数的绝对值
字长 n + 1 n+1 n+1位的原码小数可以表示的范围是: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n -(1-2^{-n})\leq{x}\leq{1-2^{-n}} (12n)</