概述
文章目录
- 计算机组成原理(第二章)
- 0. 数据类型
- 1. 数据与文字的表示方法
- 1.1 数据格式
- 定点数
- 浮点数
- 1.2 数的机器码表示
- 原码
- 补码
- 移码
- 1.3 字符与字符串的表示方法
- 1.4 校验码
- 奇偶校验码
- 海明校验码
- 2. 定点加法、减法运算
- 2.1 补码加法
- 2.2 补码减法
- 2.3 溢出概念与检测方法
- 3. 定点乘法运算
- 3.1 串行乘法
- 原码乘法(符号位与数值位分开计算)
计算机组成原理(第二章)
第二章思维导图如下:
0. 数据类型
- 按数制分:二值进制、十进制、八进制、十六进制。
- 按数据格式分: 真值、机器数。
- 按数据的表示范围分:定点数、浮点数。
- 按能否标识负数分:无符号数、有符号数。
1. 数据与文字的表示方法
1.1 数据格式
定点数
- 定点数:小数点固定在某一位置的数据。
- 纯小数:
x
0
.
x
−
1
x
−
2
x
−
3
…
…
x
−
n
x_0 . x_{-1}x_{-2}x_{-3}……x_{-n}
x0.x−1x−2x−3……x−n
- 表示形式:
x
s
x_s
xs 为符号位 ;
x
0
x_0
x0为0。
有符号数: x = x s x − 1 x − 1 … … x − n x=x_sx_{-1}x_{-1}……x_{-n} x=xsx−1x−1……x−n ∣ x ∣ ≤ 1 − 2 − n |x|le1-2^{-n} ∣x∣≤1−2−n
无符号数: x = x 0 x − 1 x − 1 … … x − n x=x_0x_{-1}x_{-1}……x_{-n} x=x0x−1x−1……x−n 0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0 le |x|le1-2^{-n} 0≤∣x∣≤1−2−n
- 表示形式:
x
s
x_s
xs 为符号位 ;
x
0
x_0
x0为0。
- 纯整数:
x
n
x
n
−
1
x
n
−
2
…
…
x
1
x
0
x_{n} x_{n-1}x_{n-2}……x_{1}x_0
xnxn−1xn−2……x1x0
- 表示形式:
x
s
x_s
xs 为符号位 ;
x
n
x_n
xn为数值位。
有符号数:$x=x_sx_{n-1}……x_{1}x_{0} $ ∣ x ∣ ≤ 1 − 2 − n |x|le1-2^{-n} ∣x∣≤1−2−n
无符号数: x = x n x n − 1 … … x 1 x 0 x=x_nx_{n-1}……x_{1}x_{0} x=xnxn−1……x1x0 0 ≤ ∣ x ∣ ≤ 1 − 2 − n 0 le |x|le1-2^{-n} 0≤∣x∣≤1−2−n
- 表示形式:
x
s
x_s
xs 为符号位 ;
x
n
x_n
xn为数值位。
- 纯小数:
x
0
.
x
−
1
x
−
2
x
−
3
…
…
x
−
n
x_0 . x_{-1}x_{-2}x_{-3}……x_{-n}
x0.x−1x−2x−3……x−n
- 定点机的特点:
- 所能表示的数据范围小;
- 数据精度较低;
- 存储单元利用率低。
浮点数
-
浮点数:小数点位置可变,形如科学计数法中的数据表示。
-
格式定义:
- M:尾数,是一个纯小数,表示数据的全部有效数位,其位数决定数值的精度;
- R:基数,可以取2、8、10、16,表示当前的数制;
- e:阶码,是一个整数,用于指出小数点在该书中的位置,其位数决定数据的取值范围;
-
机器数的一般表示形式:
阶符 阶码 数符 尾数 数符 阶符 阶码 尾数 -
规格化表示:
- 要求:|尾数|
≥
ge
≥ 0.5,( 是否为规格化浮点数与阶码无关 );
- 尾数原码表示:最高数值位为1;
- 尾数补码表示:最高数值位与符号位相反;
- 处理:
- 左规处理(数值向左移动);
- 右规处理(数值向右移动);
- 要求:|尾数|
≥
ge
≥ 0.5,( 是否为规格化浮点数与阶码无关 );
-
最值:
-
32位浮点数的IEEE754标准表示:
| 数符S | 阶码E | 尾数M |- 数符S:1位,表示浮点数的符号;
- 尾数M:23位,原码纯小数表示,小数点在尾数域的最前面;
- 阶码E:8位,采用有偏移值的移码表示(移127码);
- 真值: N = ( − 1 ) S ∗ ( 1. M ) ∗ 2 E − 127 N=(-1)^S * (1.M)*2^{E-127} N=(−1)S∗(1.M)∗2E−127
-
S E M 正零 0 0000 0000 000……000 负零 1 0000 0000 000……000 正无穷 0 1111 1111 000……000 负无穷 1 1111 1111 000……000
1.2 数的机器码表示
原码
- 定义:
- 定点小数:
[ x ] 原 { x , 1>x ≥ 0 1 − x = 1 + ∣ x ∣ , 0 ≥ x>-1 [x]_原 begin{cases} x, & text{1>x$ge$0} \[3ex] 1-x=1+|x|, & text{0$ge$ x>-1} end{cases} [x]原⎩⎪⎨⎪⎧x,1−x=1+∣x∣,1>x≥00≥ x>-1 - 定点整数:
[ x ] 原 { x , 2 n >x ≥ 0 1 − x = 1 + ∣ x ∣ , 0 ≥ x> − 2 n [x]_原 begin{cases} x, & text{$2^n$>x$ge$0} \[3ex] 1-x=1+|x|, & text{0$ge$ x>$-2^n$} end{cases} [x]原⎩⎪⎨⎪⎧x,1−x=1+∣x∣,2n>x≥00≥ x>−2n
- 定点小数:
- 特点:
- 0的有两种表示法; [ + 0 ] 原 = 0000 ; [ − 0 ] 原 = 1000 [+0]_原=0000;[-0]_原=1000 [+0]原=0000;[−0]原=1000
- 数据表示范围:
- 定点小数: − 1 < x < 1 -1<x<1 −1<x<1
- 定点整数: − 2 n < x < 2 n -2^n<x<2^n −2n<x<2n
- 符号位与数值位不能一起参与运算
补码
-
定义:
- 定点小数:
[ x ] 补 { x , 1>x ≥ 0 2 + x = 2 − ∣ x ∣ , 0 ≥ x ≥ -1 ( m o d 2 ) [x]_补 begin{cases} x, & text{1>x$ge$0} \[3ex] 2+x=2-|x|, & text{0$ge$ x$ge$-1} end {cases} (mod 2) [x]补⎩⎪⎨⎪⎧x,2+x=2−∣x∣,1>x≥00≥ x≥-1(mod 2) - 定点整数:
[ x ] 补 { x , 2 n >x ≥ 0 2 n + 1 + x = 2 n + 1 − ∣ x ∣ , 0 ≥ x ≥ - 2 n ( m o d 2 n + 1 ) [x]_补 begin{cases} x, & text{$2^n$>x$ge$0} \[3ex] 2^{n+1} +x=2^{n+1}-|x|, & text{0$ge$ x $ge$-$2^n$} end {cases} (mod 2^{n+1}) [x]补⎩⎪⎨⎪⎧x,2n+1+x=2n+1−∣x∣,2n>x≥00≥ x ≥-2n(mod 2n+1)
- 定点小数:
-
特点:
- 0的编码唯一:0000
- 数据表示范围:
- 定点小数: − 1 < x < 1 -1<x<1 −1<x<1
- 定点整数: − 2 n ≤ x < 2 n -2^nle x<2^n −2n≤x<2n
- 只要结果不溢出,符号位可与数值位一起参与运算
- [ [ x ] 补 ] 补 = [ x ] 原 [[x]_补]_补 = [x]_原 [[x]补]补=[x]原
-
有原码求补码
- 除符号位以外,其余各位按位取反,末位加一;
- 除符号位以外,从最低位开始,遇到的第一个1以前各位保持不变,之后各位取反。
-
求相反数的补码:由 [ x ] 补 [x]_补 [x]补求 [ − x ] 补 [-x]_补 [−x]补 (连同符号位的所有位一起取反,末位加一)。
移码
- 定义:
[ x ] 移 = 2 n + x 2 n > x ≥ − 2 n [x]_移=2^n+x 2^n>xge-2^n [x]移=2n+x 2n>x≥−2n - 特点:
- 0的表示方法唯一:1000;
- 与补码符号位相反,数值位相同;
- 最高位为0表示负数,为1表示整数;
- 可以较为直观的判断两个数据的大小(全为0时所对应真值最小,全为1时所对应真值最大);
- 表示浮点数阶码时,容易判断是否下溢。
1.3 字符与字符串的表示方法
- ASCII码:8位,可表示128个字符,最高位为0,最高位可进行奇偶校验。
- 字符串:连续的一串字符,每个字节存一个字符。
1.4 校验码
- 数据校验的基本原理是扩大码距。
- 码距:任意两个合法码之间不同的二进制位的最少位数。
奇偶校验码
- 原理:在数据中增加1位奇偶校验位,是码距有1增到2。
- 类型:
- 偶校验:每个码字(包括校验位)中1的数目为偶数;
- 奇校验:每个码字(包括校验位)中1的数目为奇数。
- 过程:
- 发送端:按照校验类型,在发送数据后添加校验位P;
- 接收端:对接收到的数据(包括校验位)进行同样类型的校验,决定数据传输中是否存在错误。
- 特点:具有检错能力(只能检测有奇数个错误的情况),但无纠错能力。
海明校验码
- 原理:在一个数据中加入几个校验位,每个校验位和某几个特定的信息位构成偶校验的关系;接收端对每个偶关系进行校验,产生校验因子;通过校验因子区分无错和码字中的n个不同位置的错误;
- 过程:
-
确定校验位的位数:
- 设K为有效信息的位数,r为校验位的位数,则整个码字的位数N应满足不等式:
N = K + r ≤ 2 r − 1 , ( N , K ) 为 海 明 码 N=K+r le 2^r-1, (N,K)为海明码 N=K+r≤2r−1, (N,K)为海明码
- 设K为有效信息的位数,r为校验位的位数,则整个码字的位数N应满足不等式:
-
确定校验位的位置:
- 每个校验位 P i P_i Pi从低到高被分在海明码中位号 2 i − 1 2^{i-1} 2i−1的位置。
-
校验分组:
- 海明码的每一位Hi有多个校验位校验,其关系是被校验的每一位位号等于校验它的各校验位的位号之和;
- 每个信息位的位置写成用2的幂次之和的形式 ;
例如下图:
-
校验位的形成:
- P i P_i Pi =第i组中所有位(除 P i P_i Pi)求异或;
- 为了能检测两个错误,增加一位校验 P j + 1 P_{j+1} Pj+1,放在最高位;
- P i + 1 P_{i+1} Pi+1 =所有位(包括P)求异或。
-
接收端校验:
- 接收端接收到数据后,分别求
S
1
,
S
2
,
S
3
,
…
,
S
i
S_1,S_2,S_3,…,S_i
S1,S2,S3,…,Si :
S i S_i Si=第j组中所有位(包括 P i P_i Pi)求异或
S i + 1 = P i + 1 S_{i+1}= P_{i+1} Si+1=Pi+1 ⊕所有位(包括 P 1 , P 2 , … , P i P_1,P_2 ,… , P_i P1,P2,…,Pi)求异或;
当 S i + 1 = 1 S_{i+1}=1 Si+1=1时,有一位出错;
由 S i , … … S 3 S 2 S 1 S_i,……S_3 S_2 S_1 Si,……S3S2S1的编码指出出错位号,将其取反,即可纠错。
当 S i + 1 = 0 S_{i+1}=0 Si+1=0时,无错或有偶数个错(两个错的可能性比较大);
当 S i , … … S 3 S 2 S 1 = 0 … … 000 S_i,……S_3 S_2 S_1=0……000 Si,……S3S2S1=0……000时,接收的数无错,否则有两个错。
- 接收端接收到数据后,分别求
S
1
,
S
2
,
S
3
,
…
,
S
i
S_1,S_2,S_3,…,S_i
S1,S2,S3,…,Si :
-
- 特点:既能检错,又能纠错。
2. 定点加法、减法运算
2.1 补码加法
- 定点整数: [ x + y ] 补 = [ x ] 补 + [ y ] 补 ( m o d 2 n + 1 ) [x+y]_补 = [x]_补+[y]_补 (mod 2^{n+1}) [x+y]补=[x]补+[y]补 (mod 2n+1)
- 定点小数: [ x + y ] 补 = [ x ] 补 + [ y ] 补 ( m o d 2 ) [x+y]_补 = [x]_补+[y]_补 (mod 2) [x+y]补=[x]补+[y]补 (mod 2)
2.2 补码减法
- 定点整数: [ x − y ] 补 = [ x ] 补 + [ − y ] 补 ( m o d 2 n + 1 ) [x-y]_补 = [x]_补+[-y]_补 (mod 2^{n+1}) [x−y]补=[x]补+[−y]补 (mod 2n+1)
- 定点小数: [ x − y ] 补 = [ x ] 补 + [ − y ] 补 ( m o d 2 ) [x-y]_补 = [x]_补+[-y]_补 (mod 2) [x−y]补=[x]补+[−y]补 (mod 2)
2.3 溢出概念与检测方法
- 溢出:在定点数机器中,数的大小超出了定点数能表示的范围。
- 上溢:数据大于机器所能表示的最大正数;
- 下溢:数据小于机器所能表示的最小负数。
- 判别方法:
-
直接判别法:
- 同号补码相加,结果符号位与加数相反;
- 异号补码相减,结果符号位与减数相同。
-
变形补码判别法:采用双符号位表示补码。
符号位 结果 00 正 01 上溢 10 下溢 11 负 -
进位判别法:最高数值位的进位与符号位的进位是否相同。
-
3. 定点乘法运算
3.1 串行乘法
- 乘法运算 = 加法+移位。
若乘数数值位n = 4,则累加 4 次,移位4 次。 - 乘法过程
- 由乘数的末位决定被乘数是否与原部分积相加;
- 被乘数只与部分积的高位相加;
- 部分积右移一位形成新的部分积;
- 同时乘数右移一位(末位移丢);
- 空出高位存放部分积的低位。
- 硬件构成
3个具有移位功能的寄存器、一个全加器。
原码乘法(符号位与数值位分开计算)
-
原码一位乘
数值位运算规则:- 被乘数和乘数均取绝对值参加运算,符号位单独考虑;
- 被乘数取双符号位,部分积的长度同被乘数,初值为0;
- 从乘数的最低位Yn开始判断:
- 若Yn=1,则部分积加上被乘数|X|,然后右移一位;
- 若Yn=0,则部分积加上0,然后右移一位。
- 重复,判断n次。
-
原码两位乘
数值位运算规则:- 部分积和被乘数均采用三位符号位;
- 乘数末位增加1位C,其初值为0,运算过程见表;
乘数字长与运算步骤:
- 若乘数字长为偶数(不含符号),最多做n/2+1次加法,需做n/2次移位,最后一步不移位;
- 若尾数字长n为奇数(不含符号),增加一位符号0,最多做n/2+1次加法,需做n/2+1次移位,最后一步右移一位。
最后
以上就是刻苦柠檬为你收集整理的计算机组成原理知识点-第二章计算机组成原理(第二章)0. 数据类型1. 数据与文字的表示方法2. 定点加法、减法运算3. 定点乘法运算的全部内容,希望文章能够帮你解决计算机组成原理知识点-第二章计算机组成原理(第二章)0. 数据类型1. 数据与文字的表示方法2. 定点加法、减法运算3. 定点乘法运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复