计算机组成原理和体系

常见的进制

{\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* 242^424 +0*232^323+0*222^222+1*212^121+0*202^020+1*2−12^{-1}21

{\quad}八进制:251.5 {\qquad}{\qquad} 2* 828^282 +5*818^181+1*808^080+5*8−18^{-1}81

{\quad}十六进制:AE86.1{\qquad}{\quad} 10* 16316^3163 +14*16216^2162+8*16116^1161+6*16016^0160+1*16−116^{-1}161

常用2的次方

2−32^{-3}232−22^{-2}222−12^{-1}21202^020212^121222^222232^323242^424252^525262^626272^727282^828292^9292102^{10}2102112^{11}2112122^{12}212
0.1250.250.51248163264128256512102420484096

二进制→八进制

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

0011\frac{001}{1}10011117\frac{111}{7}71110000\frac{000}{0}00000102\frac{010}{2}2010.0113\frac{011}{3}30110102\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位一组,每组转换为十六进制符号

00113\frac{0011}{3}300111100C\frac{1100}{C}C110000102\frac{0010}{2}2001001106\frac{0110}{6}60110.10008\frac{1000}{8}81000

十六进制→二进制

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

(AE86.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 11110\ 11110 1111

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

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

定点数VS浮点数

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

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

原码

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

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

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

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

反码

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

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

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

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

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

补码

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

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

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

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

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

定点整数补码[x]补[x]_补[x]=1 000 00001\ 000\ 00001 000 0000,表示x=-272^727

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

移码

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

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

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

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

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

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

浮点数

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

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

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

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

校验码:海明码

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值