【计算机组成原理】第二章 运算方法和运算器

在这里插入图片描述

真值和机器数的互换

[原码,补码,反码,移码]

  • 原码:符号位+绝对值的二进制。
  • 补码:正数:补码等于原码;负数:除符号位外,各位取反末位加1
  • 反码:正数:反码等于原码;负数:除符号位外,各位取反
  • 移码:补码符号位取反
  • 8421BCD码:每四位二进制表示一位十进制数,范围是[0,9]。
  • 余三码:8421的基础上加3.
    8421BCD码和余三码一般用于表示字符串,不用于计算

校验码

数据再计算机传输过程中会出现错误,错误会引起歧义,所以需要校验码。
码距是指两个码组对应位上数字的不同位数称为码组的距离,又称为汉明距离。码距为1时不具备校验能力。
通信双方的大工程某种共识:校验方法、校验位数、校验位置
1.奇偶校验码
以奇校验码为例:
最高位为校验位,最高位补0或1是校验码中1的个数为奇数。

数据:01010101
发送方:奇校验  1 010101011的个数右奇数个)
接收方:
没错:101010101----01010101(去掉校验位)
1位错:11 1101010120 010101011的个数为偶数了,可以检验到错误)
2位错: 1 10010101(此时1的个数为奇数,不能检验到错误)

优点:简单,传输效率高
缺点:只能发现错误,不能修改错误;只有当奇数个位数出错时才能被发现。

2.Hamming校验码
发送方:
1、校验位的位数
(1)仅能发现并修正一位错
假设数据位D(d位),校验位R(r位)
2r>=d+r+1
(2)发现修正一位错,并发现两位错
2r-1>=d+r
2.校验位的位置
海明码的下标为2i的位置上,或者海明码最高位
设数据位d=8,推出r=5

H13 H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
R5  D8  D7  D6  D5 R4 D4 D3 D2 R3 D1 R2 R1 

3.校验位的值
(1)确定校验关系:数据位在海明码中的下标=参与校验的校验位的下标和

D1(3=2+1)  R2  R1
D2  (5=4+1)  R3 R1
D3 (6=4+2)  R3  R2
D4  :R3  R2  R1
D5:  R4  R1
D6:R4  R2
D7 :R4  R2  R1
D8:R4 R3  

2)确定校验位的值=它参与校验的数据位的抑或

R1=D1^D2^D4^D5^D7
R2:D1^D3^D4^D6^D7
R3:D2^D3^D4^D8
R4:D5^D6^D7^D8
R5:(D1^...^D8)^(R1^...^R5)

接收方:

S1=R1'^(D1'^D2’^D4’^D5‘^D7’)
S2=R2‘^(D1’^D3‘^D4’^D6‘^D7’)
S3=R3'^(D2‘^D3’^D4‘^D8’)
S4=R4'^(D5‘^D6’^D7‘^D8’)
S5=R5^(D1^...^D8)(R1^...^R5)

(1)没有错误 S5=0 S4S3S2S1=0000
(2)发生一位错
I.D2出错 S5 =1 S4S3S2S1=0101=5->H5,即出错位置在汉明码的下标
II. D5出错 S5 =1 S4S3S2S1=1001
III.校验位R1出错 S5 =1 S4S3S2S1=0001
(3) 发生两位错:
设数据位D1和D3出错:S5 =0 S4S3S2S1=0101

3.CRC 循环冗余校验码
模2运算
(1)模2加减运算—异或运算

eg:1010-1101=1010+1101=1010^1101

(2)模2除法运算:依托模2减法。根据被除数或者余数的最高位决定是否做模2减法,如果最高位1则做模2减法,否则不做减法
生成多项式 G ( x ) = a X 3 + b X 2 + c X + d G(x)=aX^3+bX^2+cX+d
生成多项式是一串二进制编码,G。
假设数据位为D(位数为d),G位数为r+1位
发送方:
1.将D左移r位,低位补0,形成d+r位信息位M
2.M模2除G,得到商和r位余数
3.生成CRC编码=M+余数
接收方:
CRC编码模2除G=(M’+余数‘)/G
没有错误:余数为0,M’=M 余数’=余数
(M’+余数‘)/G=(M+余数)/G=M/G+余数/G=商+余数/G+余数/G=商+(余数+余数)/G=商
如果出错:根据余数情况修改或者判断错误

扫描二维码关注公众号,回复: 9996787 查看本文章

定点数的表示

定点数:小数点固定的数,纯小数或者纯整数
1.N位二进制数原码的表示范围:
整数: [ 2 n 1 + 1 , 2 n 1 1 ] [-2^{n-1}+1,2^{n-1}-1]
小数: [ ( 1 2 1 n ) , 1 2 1 n ] [-(1-2^{1-n}),1-2^{1-n}]

2.N位二进制数补码的表示范围:
整数: [ 2 n 1 , 2 n 1 1 ] [-2^{n-1},2^{n-1}-1]
小数: [ 1 , 1 2 1 n ] [-1,1-2^{1-n}]

定点数的运算—加减

1.原码加减—不适合做加减运算
(1)判断结果的符号
(2)相加或者用||被减数|-|减数||
(3)结果

2.补码加减
[A+B]补=[A]补+[B]补
[A-B]补=[A]补+[-B]补
优点:直接运算

定点数的运算—溢出的判断

双符号位法:两个符号位同时运算,双符号位不同则溢出,上溢和下溢。
1.逻辑移位:逻辑左移,逻辑右移
移出位移走,补位位补0
eg:1010
左移:0100
右移:0101

2.小循环移位:小循环左移,小循环右移
移出移入到补位位,同时移入到标记为C中
在数字最前和最后分别有一个C位,储存溢出位
eg: 1010
左移:1 0101
右移:0101 0

3. 大循环移位:大循环左移,大循环右移
移出位移入到C位,C位移入到补位位
eg:0 1010
左移:1 0100
右移:0101 0

4.算术移位
(1)保留数值的数学意义,左移相当于乘以2,右移相当于除以2
(2)存在溢出或精度丧失
原码:符号位不动,数值位逻辑左右移
补码:带差符号位一起移动
溢出位移出,补位位:高位补符号位,地位补零。

5.溢出过半
原码:符号位为0或1,数值位最高位为1
补码:符号位为0,数值最高位为1;符号位为1,数值最高位为0.

发布了328 篇原创文章 · 获赞 107 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43460224/article/details/104846058