【软考】计算机组成体系与构成
一.数据的表示
1.进制转换
| 进制 | 数码 | 基数 | 位权 |
|---|---|---|---|
| 十进制 | 0~9 | 10 | 10k |
| 二进制 | 0,1 | 2 | 2k |
| 八进制 | 0~7 | 8 | 8k |
| 十六进制 | 0~9,A-F | 16 | 16k |
1.1加权法/按权展开法
简单来说就是:n进制 ————> 十进制,什么进制数转成十进制就用它的位权来算
举个例子比如:
二进制转成十进制:111=1×20+2×21+3×22 ,10100.01=1×24+1×22+1×2-2
八进制转成十进制: 2063=2×83+6×81+3×80
十六进制转成十进制: 2029A=2×164 +2×162 +9×161 +10×160
1.2短除法/除基数取余法
简单来说就是:一个十进制的数去转成n进制的数,比如二进制,十六进制等
举个例子比如十进制的94转换成二进制:
| 除数(二进制数) | 被除数(十进制数) | 余数 |
|---|---|---|
| 2 | 94 | 0 |
| 2 | 47 | 1 |
| 2 | 23 | 1 |
| 2 | 11 | 1 |
| 2 | 5 | 1 |
| 2 | 2 | 0 |
| 2 | 1 | 1 |
| 0 |
得到结果是(余数从下到上看):1011110
1.3凑维权法
简单来说就是:画个图来直观表示,费时间但不容易错
举个例子,比如把十进制的7和86转成二进制数,可以画个表然后慢慢配,但是我感觉这个比较麻烦,虽然很直观,但是不是很建议,费时间感觉,当然可以用于任意进制转换,画个图就可以了。
| 位号 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| K | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 权值2k | 128 | 64 | 31 | 16 | 8 | 4 | 2 | 1 |
| 7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
| 86 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
1.4分组法/逆分组法
简单来说就是:对一些有规律的进制数,比如二进制与八进制(23),十六进制(24)可以拆成三分法和四分法,这样装换起来比较简单一些。
举个例子:
二进制和八进制(三分法):把一个八进制数拆成3个二进制数
| 进制数 | 数值 |
|---|---|
| 二进制 | 10 001 110 |
| 八进制 | 2 1 6 |
二进制和十六进制(四分法):把一个十六进制数拆成4个二进制数
| 进制数 | 数值 |
|---|---|
| 二进制 | 1000 1110 |
| 十六进制 | 8 E |
2.码制(原码/反码/补码/移码)
2.1原码/反码/补码/移码的概念
原码:符号位+数值位绝对值。(补充:正数的符号位是0,负数的符号位是1)
反码:正数的反码是原码本身,负数的反码是符号位不变,数值位按位取反。
补码:正数的补码是原码本身,负数的补码是符号位不变,数值位在反码基础上加1。
移码:正数和负数的移码都是在补码基础上符号位取反。
简单举个例子:
| 1 | -1 | 1-1 | |
|---|---|---|---|
| 原码 | 0000 0001 | 1000 0001 | 0000 0000 |
| 反码 | 0000 0001(同上) | 1111 1110 | 1111 1111 |
| 补码 | 0000 0001(同上) | 1111 1111 | 0000 0000 |
| 移码 | 1000 0001 | 0111 1111 | 1000 0000 |
在计算各种码的时候记得看清楚,对于正数来说,从原码到补码都是一样的不变,移码变一下符号位就好了,对负数来说就要注意的就很多了,更多的要学会反推。
2.2定点整数
n位二进制能够表示的数值范围和数码
| 码制 | 定点整数范围 | 数码个数 |
|---|---|---|
| 原码 | -(2n-1-1)~+(2n-1-1) | 2n-1 |
| 反码 | -(2n-1-1)~+(2n-1-1) | 2n-1 |
| 补码 | -2n-1~+(2n-1-1) | 2n |
| 移码 | -2n-1~+(2n-1-1) | 2n |
定点整数的范围和数码个数要大概记一下和推断就好了,举个例子,当n=4时,也就是有四个数,其中有第一位是符号位,后三个是数值位,那么对于这个数的原码,反码可以取到1111到0111,但是取不到1000这个值(零的话是0000还是可以取到的),所以原码和反码就少了一个,所以原码和反码的个数是2n-1,范围在-(2n-1-1)~+(2n-1-1)内,实在不行把n代入从-7到7自己理解一下,而补码和移码是可以取到1000的,比如其中一个数的补码是0000,那么它的移码就1000,其中**-8为1000是认为规定的**,所以相比起原码和反码,补码和反码在数码个数上会多一个,达到2n个。
补充:补码和移码中,正负0编码相同。
2.3.定点小数
n位二进制能够表示的数值范围和数码
| 码制 | 定点小数 | 数码个数 |
|---|---|---|
| 原码 | -(1-2-(n-1))~+(1–2-(n-1)) | 2n-1 |
| 反码 | -(1-2-(n-1))~+(1–2-(n-1)) | 2n-1 |
| 补码 | -1~+(1–2-(n-1)) | 2n |
| 移码 | -1~+(1–2-(n-1)) | 2n |
**小数点后的和定点整数的推算差不多,可以参考定点整数的推算。**举个例子,比如说
3浮点数的表示
3.1浮点数的表述以及运算过程
浮点数的表示: N=尾数*基数指数
运算过程:对阶>尾数计算>结果格式化
3.2特点
1、一般尾数用补码,阶码用移码
2、阶码的位数决定数的表示范围,位数越多范围越大
3、尾数的位数决定数的有效精度,位数越多精度越高
4、对阶时,小数向大数看齐
5、对阶是通过较小数的尾数右移实现的(相当于小数点左移)
4.算术与逻辑运算
逻辑变量之间的运算称为逻辑运算。二进制数1和0在逻辑上可以代表"真"与"假"。
4.1逻辑运算
-
逻辑与(AND):
- 符号:
∧或& - 描述:当两个逻辑值全为1时结果为真(1),否则为假(0)。
- 示例:
A ∧ B或A & B
- 符号:
-
逻辑或(OR):
- 符号:
∨或| - 描述:当两个逻辑值全为0时结果为假(0),否则为真(1)。
- 示例:
A ∨ B或A | B
- 符号:
-
逻辑非(NOT):
- 符号:
¬或! - 描述:将原逻辑值取反,即原来为1则变成0,原来为0则变成1。
- 示例:
¬A或!A
- 符号:
-
逻辑异或(XOR):
- 符号:
⊕ - 描述:当两个逻辑值不同时结果为1,相同时结果为0。
- 示例:
A ⊕ B
- 符号:
| A | B | A*B | A+B | !A | A⊕B |
|---|---|---|---|---|---|
| 0 | 0 | 0 |


2775

被折叠的 条评论
为什么被折叠?



