计算机组成原理什么是模运算,【计算机组成原理】运算方法和运算器

db673ff74395859e0111bc1b8723735b.png

真值和机器数的互换

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

原码:符号位+绝对值的二进制。

补码:正数:补码等于原码;负数:除符号位外,各位取反末位加1

反码:正数:反码等于原码;负数:除符号位外,各位取反

移码:补码符号位取反

8421BCD码:每四位二进制表示一位十进制数,范围是[0,9]。

余三码:8421的基础上加3.

8421BCD码和余三码一般用于表示字符串,不用于计算

校验码

数据再计算机传输过程中会出现错误,错误会引起歧义,所以需要校验码。

码距是指两个码组对应位上数字的不同位数称为码组的距离,又称为汉明距离。码距为1时不具备校验能力。

通信双方的大工程某种共识:校验方法、校验位数、校验位置

1.奇偶校验码

以奇校验码为例:

最高位为校验位,最高位补0或1是校验码中1的个数为奇数。

数据:01010101

发送方:奇校验 1 01010101(1的个数右奇数个)

接收方:

没错:101010101----01010101(去掉校验位)

1位错:(1) 1 11010101

(2) 0 01010101(1的个数为偶数了,可以检验到错误)

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+dG(x)=aX3+bX2+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=商

如果出错:根据余数情况修改或者判断错误

定点数的表示

定点数:小数点固定的数,纯小数或者纯整数

1.N位二进制数原码的表示范围:

整数:[ − 2 n − 1 + 1 , 2 n − 1 − 1 ] [-2^{n-1}+1,2^{n-1}-1][−2n−1+1,2n−1−1]

小数:[ − ( 1 − 2 1 − n ) , 1 − 2 1 − n ] [-(1-2^{1-n}),1-2^{1-n}][−(1−21−n),1−21−n]

2.N位二进制数补码的表示范围:

整数:[ − 2 n − 1 , 2 n − 1 − 1 ] [-2^{n-1},2^{n-1}-1][−2n−1,2n−1−1]

小数:[ − 1 , 1 − 2 1 − n ] [-1,1-2^{1-n}][−1,1−21−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.

浮点数的表示

规则:

1)组成部分、顺序

2)每个组成部分位数

3)尾数和阶码表示形式:

尾数:定点小数

阶码:定点整数

一、IEEE754标准

1.格式:

32位(float)和64位(double)

6a3e45b3107ac23c8f061238c4cfd45b.png

2. IEEE有关阶码的规定

(1)用修正过的移码表示

修正过的移码可以表示0和±∞;

float:真值(e)=机器数的值(E)-128

double:真值(e)=机器数的值(E)-1024

(2)有关移码

e = E − 2 n − 1 e=E-2^{n-1}e=E−2n−1

(3)E位全零或者全1的状态都不用

全0:表示数值0

全1:表示+-∞

所以正式的IEEE754标准:

e = E − ( 2 n − 1 − 1 ) e=E-(2^{n-1}-1)e=E−(2n−1−1)

3. IEEE有关尾数的规定

(1)用修正过的原码表示尾数

(2)最高数值位必须为1,并且省略。

这样进一步提高了数据的精度。

(3)什么是规格化的尾数(M)

∣ M ∣ > = 1 / 2 = ( 0.1 ) 2 |M|>=1/2=(0.1)_2∣M∣>=1/2=(0.1)2​

因为尾数最高的数值位为1,并且省略。

E:阶码

S:符号位

M:尾数

float:( − 1 ) s ∗ 1. M ∗ 2 E − 127 (-1)^s*1.M*2^{E-127}(−1)s∗1.M∗2E−127

double:( − 1 ) s ∗ 1. M ∗ 2 E − 1023 (-1)^s*1.M*2^{E-1023}(−1)s∗1.M∗2E−1023

4. IEEE与真值的相互转换

eg:Float类型413C0000H的真值是多少:

413 C 0000 H = ( 01000001001111000000000000000000 ) 2 413C0000H =(0100 0001 0011 1100 0000 0000 0000 0000)_2413C0000H=(01000001001111000000000000000000)2​

S = 0 ; M = 0111 ; E = 10000010 S=0;M=0111;E=1000 0010S=0;M=0111;E=10000010

e = ( − 1 ) s ∗ 1. M ∗ 2 E − 127 e=(-1)^s*1.M*2^{E-127}e=(−1)s∗1.M∗2E−127

= ( − 1 ) 0 ∗ 1.01111 ∗ 2 130 − 127 =(-1)^0*1.01111*2^{130-127}=(−1)0∗1.01111∗2130−127

= ( 1011.11 ) 2 =(1011.11)_2=(1011.11)2​

= 11.75 =11.75=11.75

5. Float类型的表示范围

428ff6250282b261d76ea3288d0cc0b5.png

二、非IEEE754标准

1.有机组成部分

b22955eae325fd517baa8bc711347687.png

每部分可以用不同的编码表示,最常见的阶码和尾数都用补码表示。

2. 表示范围

(1)为什么要规格化?

为了进一步提高数据精度

(2)规格化的本质是什么?

∣ 尾 数 ∣ > = 0.5 |尾数|>=0.5∣尾数∣>=0.5

(3)这种本质的体现是什么?

尾数分别用原码和补码表示的时候规格化的尾数是什么形式的?

原码:数值最高位为1

补码:1.0xxxxx或者0.1xxxxx或者1.1xxxxx

(4)IEEE754标准如何做的规划化?

尾数最高的数值位为1,并且省略。

设某浮点数阶码和尾数都用4位二进制补码表示。

6d497bb36094a212fc9fc070bcb292b3.png

浮点数的运算

一、IEEE754标准的加减运算

(1)0操作数检查

(2)对阶:小阶向大阶对齐,尾数右移

(3)尾数加减:补码双符号位

(4)规格化: 左规;右规

左规:尾数+-不发生溢出,结果不是规格化,左规尾数不定,阶码-1,知道规格化为止;

右规:尾数+-发生溢出,带两个符号位右移移位,阶码+1

(5)舍入,阶码采用补码双符号位运算。0舍1入。

(6)判断溢出

在溢出判断中,什么样的情况才算溢出?

阶码溢出才叫溢出

尾数溢出是否标志着结果的溢出?

尾数溢出不表示结果的溢出

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值