计算机组成原理和体系

常见的进制

{\quad} 二进制:0,1
{\quad} 八进制:0,1,2,3,4,5,6,7
{\quad} 十进制:0,1,2,3,4,5,6,7,8,9
{\quad} 十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

任意进制→十进制

{\quad} 二进制:10010.1 {\qquad} {\quad} 1* 2 4 2^4 24 +0* 2 3 2^3 23+0* 2 2 2^2 22+1* 2 1 2^1 21+0* 2 0 2^0 20+1* 2 − 1 2^{-1} 21

{\quad} 八进制:251.5 {\qquad} {\qquad} 2* 8 2 8^2 82 +5* 8 1 8^1 81+1* 8 0 8^0 80+5* 8 − 1 8^{-1} 81

{\quad} 十六进制:AE86.1 {\qquad} {\quad} 10* 1 6 3 16^3 163 +14* 1 6 2 16^2 162+8* 1 6 1 16^1 161+6* 1 6 0 16^0 160+1* 1 6 − 1 16^{-1} 161

常用2的次方

2 − 3 2^{-3} 23 2 − 2 2^{-2} 22 2 − 1 2^{-1} 21 2 0 2^0 20 2 1 2^1 21 2 2 2^2 22 2 3 2^3 23 2 4 2^4 24 2 5 2^5 25 2 6 2^6 26 2 7 2^7 27 2 8 2^8 28 2 9 2^9 29 2 10 2^{10} 210 2 11 2^{11} 211 2 12 2^{12} 212
0.1250.250.51248163264128256512102420484096

二进制→八进制

3位一组,每组转换为八进制符号

001 1 \frac{001}{1} 1001 111 7 \frac{111}{7} 7111 000 0 \frac{000}{0} 0000 010 2 \frac{010}{2} 2010. 011 3 \frac{011}{3} 3011 010 2 \frac{010}{2} 2010

八进制→二进制

每位八进制对应3位二进制

( 251.5 ) 8 (251.5)_8 (251.5)8 ( 010   101   001.101 ) 2 (010\ 101\ 001.101)_2 (010 101 001.101)2

二进制→十六进制

4位一组,每组转换为十六进制符号

0011 3 \frac{0011}{3} 30011 1100 C \frac{1100}{C} C1100 0010 2 \frac{0010}{2} 20010 0110 6 \frac{0110}{6} 60110. 1000 8 \frac{1000}{8} 81000

十六进制→二进制

每位十六进制对应4位二进制

( A E 86.1 ) 16 (AE86.1)_{16} (AE86.1)16 ( 1010   1110   1000   0110.0001 ) 2 (1010\ 1110\ 1000\ 0110.0001)_2 (1010 1110 1000 0110.0001)2

十进制→任意进制

十进制转R进制使用短除法

例:将94转换为二进制

被除数除数余数
2940
2471
2231
2111
251
220
211

转换完成的二进制为(由下往上):1011110

数据的表示——真值和机器数

15→1111 \qquad +15→ 0   1111 0\ 1111 0 1111

8→1000 \qquad -8→ 1   1000 1\ 1000 1 1000

真值:符合人类习惯的数字
机器数:数字实际存到机器的形式,正负号需要数字化,其中0表示正,1表示负

定点数VS浮点数

定点数:小数点的位置固定 \qquad 例:996.07——常规计数
浮点数:小数点的位置不固定 \qquad 例:9.9607* 1 0 2 10^2 102——科学计数
定点数的表示 { 无符号数 有符号数 { 原码 反码 补码 移码 定点数的表示\begin{cases} 无符号数\\ \\ 有符号数\begin{cases} 原码\\ 反码\\ 补码\\ 移码 \end{cases} \end{cases} 定点数的表示 无符号数有符号数 原码反码补码移码

无符号数:整个机器字长全部二进制位均为数值位,相当于绝对值,通常只有无符号整数,没有无符 \qquad \qquad 号小数。

原码

原码:用数值部分表示真值的绝对值,符号位“0/1”,对应“正/负”

常写为: [ x ] 原 [x]_原 [x]= 1   0010011 1\ 0010011 1 0010011

若机器字长n+1位,原码整数的表示范围:-( 2 n 2^n 2n-1)=<x=<( 2 n 2^n 2n-1)

真值0有+0和-0两种形式
[ + 0 ] 原 [+0]_原 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000

反码

反码:若符号位为0,则反码与原码相同
\qquad 若符号位为1, 则数值位全部取反

x=+19D \qquad [ x ] 原 [x]_原 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011

x=-19D \qquad   [ x ] 原 \ [x]_原  [x]= 1   001   0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 1   110   1100 1\ 110\ 1100 1 110 1100

若机器字长n+1位,反码整数的表示范围:-( 2 n 2^n 2n-1)=<x=<( 2 n 2^n 2n-1)

真值0有+0和-0两种形式
[ + 0 ] 原 [+0]_原 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [0]= 1   111   1111 1\ 111\ 1111 1 111 1111

补码

补码:正数的补码=原码
\qquad 负数的补码=反码末尾+1(要考虑进位)

x=+19D \qquad [ x ] 原 [x]_原 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 补 [x]_补 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011

x=-19D \qquad   [ x ] 原 \ [x]_原  [x]= 1   001   0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 1   110   1100 1\ 110\ 1100 1 110 1100
\qquad \qquad \quad [ x ] 补 [x]_补 [x]= 1   110   1101 1\ 110\ 1101 1 110 1101

[ + 0 ] 原 [+0]_原 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [0]= 1   111   1111 1\ 111\ 1111 1 111 1111
[ + 0 ] 补 [+0]_补 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 补 [-0]_补 [0]= 0   000   0000 0\ 000\ 0000 0 000 0000

[ + 0 ] 补 [+0]_补 [+0]= [ − 0 ] 补 [-0]_补 [0]= 0   000   0000 0\ 000\ 0000 0 000 0000
注:补码的真值0只有一种形式!!!

定点整数补码 [ x ] 补 [x]_补 [x]= 1   000   0000 1\ 000\ 0000 1 000 0000,表示x=- 2 7 2^7 27

若机器字长n+1位,补码整数的表示范围:
- 2 n 2^n 2n=<x=<( 2 n 2^n 2n-1),比原码多表示一个- 2 n 2^n 2n

移码

移码:补码的基础上将符号位取反,移码只能用于表示整数

x=+19D \qquad [ x ] 原 [x]_原 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 补 [x]_补 [x]= 0   001   0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 移 [x]_移 [x]= 1   001   0011 1\ 001\ 0011 1 001 0011

x=-19D \qquad   [ x ] 原 \ [x]_原  [x]= 1   001   0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]= 1   110   1100 1\ 110\ 1100 1 110 1100
\qquad \qquad \quad [ x ] 补 [x]_补 [x]= 1   110   1101 1\ 110\ 1101 1 110 1101
\qquad \qquad \quad [ x ] 移 [x]_移 [x]= 0   110   1101 0\ 110\ 1101 0 110 1101

[ + 0 ] 原 [+0]_原 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [0]= 1   111   1111 1\ 111\ 1111 1 111 1111
[ + 0 ] 补 [+0]_补 [+0]= 0   000   0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 补 [-0]_补 [0]= 0   000   0000 0\ 000\ 0000 0 000 0000
[ + 0 ] 移 [+0]_移 [+0]= 1   000   0000 1\ 000\ 0000 1 000 0000 \qquad [ − 0 ] 移 [-0]_移 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000

[ + 0 ] 移 [+0]_移 [+0]= [ − 0 ] 移 [-0]_移 [0]= 1   000   0000 1\ 000\ 0000 1 000 0000
注:移码的真值0只有一种形式!!!

若机器字长n+1位,移码整数的表示范围:
- 2 n 2^n 2n=<x=<( 2 n 2^n 2n-1),与补码相同

浮点数

浮点数:浮点数是小数点位置不固定的数,它能表示更大范围的数。

表示格式: 阶符 \qquad 阶码 \qquad 数符 \qquad 尾数
阶码常为带符号的纯整数,尾数为带符号的纯小数

浮点数通常表示成:N=M* R E R^E RE
其中,M为尾数,R为基数,E为阶码

阶码:决定浮点数的数值范围
尾数:决定浮点数的数值精度

校验码:海明码

海明码的构成方法:在数据位之间插入k个校验码,通过扩大码距来实现检错和纠错。

设数据位n位,检验为k位,则n和k必须满足以下关系:
2 k 2^k 2k-1>=n+k

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值