计算机组成原理笔记02

如果文章被设置为VIP可见,请点击备用-掘金

*做题笔记1


学习内容:

  1. 教材的思维导图
  2. 课后练习(计算部分)
  3. 中国大学MOOC计算机组成原理(计算部分)

1.教材的思维导图

41eb06b011628b72e7b6a0831573a1ec.png

c5373a7b504a6ff0c70bbbf6c94adac6.png

6472597941b0958b79f1251e50378ac3.png

4708156b4406159b94fc9c716df72809.png

a791e19c76910e08a599db2ff057b700.png

2.课后练习(计算部分) 

1.由3个"1"和5个"0"组成的8位二进制补码,能表示的最小整数是__-125___。

既然要求的是最小整数,那么肯定是负数了,那么第一位可以确定为1,然后根据原反补码的计算规则,可以很轻易的排列出

当 补码=10000011 时,反码=10000010,原码=11111101---> 真值= -125

2.考虑以下C语言代码:

unsigned short usi=65535;

short si=usi;

执行上述程序段后,si的值为___-1____。

unsigned short无符号短整型,占2个字节,而short有符号短整型,占2个字节且第一位为符号位,所以将usi赋值给si时,需要注意符号位,简单来说,就是把usi原码算出来,然后根据符号位将真值算出来,就是si的值。

那么[usi] 补码 =1111 1111 1111 1111

[usi] 反码=1111 1111 1111 1110

[usi] 原码=1000 0000 0000 0001

所以,[si] 真值=-1

3.假定编译器规定int和short类型长度分别为32位和16位,执行下列C语言语句:unsigned short x=65530; unsigned int y=x; 得到y的机器数为___0000FFFAH_____。

根据C语言整型数据类型转换方法:

1.相同字长的整型数据转换:不管是有符号转无符号还是无符号转有符号,机器码不变

2.小字长转大字长:无符号小字长转无符号大字长,机器码零扩展;有符号小字长转大字长,机器码符号扩展

3.大字长转小字长,机器码截断                   ---P37

所以由题意得,unsigned short转unsigned int,无符号小字长转无符号大字长,机器码零扩展。

unsigned short x=1111 1111 1111 1010

unsigned int y=0000 0000 0000 0000 1111 1111 1111 1010=0000FFFAH

4.有如下C语言程序段:short si=-32767; unsigned short usi=si; 执行上述两条语句后,usi的值为__32769___。

根据前面的整数转换方法,这题是第一种情况,有符号转无符号,只需要保证机器码不变就行

[si] 原=1111 1111 1111 1111

[si] 反=1000 0000 0000 0000

[si] 补=1000 0000 0000 0001

[si] 机器码=8001H

[usi] 机器码=8001H

[usi] 真值=32769

5.float型数据通常用IEEE754单精度浮点数格式表示。若编译器将float型变量x分配在一个32位浮点寄存器FR1中,且X=-8.25,则FR1的内容是__C104H____。

首先将X转成二进制得:-1000.01=-1.00001*2^3

根据上面流程图里的公式计算:

S=1

E=e+127=3+127=130=1000 0010

M=000 0100 0000 0000 0000 0000

所以FR1=1100 0001 0000 0100 0000 0000 0000 0000=C104H

6.某数采用IEEE754单精度浮点数格式表示为C640 0000H ,则该数的值是_-1.5*2^13_

首先把这个十六进制数转成二进制

f=C6400000H=(1100 0110 0100 0000 0000 0000 0000 0000)B

S=1

e=E-127=1000 1100-127=140-127=13(个人感觉转成十进制更好算)

M=100 0000 0000 0000 0000 0000

将其代入公式并按权展开,-1.100*2^13=-1.5*2^13

11.用海明码对长度为8位的数据进行检错和纠错时,若能纠正一位错,则校验位数至少为_4__。

公式  n=2*r-1>=k+r 

因为k=8,所以r最小是4

2.9用IEEE754 32位单精度浮点数标准表示下列十进制数。

1.-6又5/8

整理整理,该数=-53/8=-6.625=(-110.101)B=-1.10101*2^2

S=1

E=127+2=129=1000 0001

M=101 0100 0000 0000 0000 0000

f=1100 0000 1101 0100 0000 0000 0000 0000=C0D40000H

2. 3.1415927

首先将其转换成二进制数,整数部分除二取余,小数部分乘二取整。

cb329c4f869544599f6ab4758e5db829.jpg

3. 64000

64000=37268+16384+8192+4096+2048+512=(1111101000000000)B=1.111101*2^15

S=0

E=15+127=142=1000 1110

M=111 1010 0000 0000 0000 0000

f=0100 0111 0111 1010 0000 0000 0000 0000=477A0000H

2.10 求与单精度浮点数43940000H对应的十进制数。

f=4340000H=(0100 0011 1001 0100 0000 0000 0000 0000)B

S=0

E=1000 0111-127=135-127=8

M=001 0100 0000 0000 0000 0000

将其代入公式并按权展开,+1.00101*2^8=100101000=+296

2.14 将下列十进制数表示成浮点规格化数,阶码为4位,尾数为10位,各含1位符号,阶码和尾数均用补码表示。

计算机组成原理:第三章测试题

所谓规格化处理就是使得尾数真值最高有效位为1,也就是尾数的绝对值应大于或等于(0.1)2或(0.5)10。除使尾数真值大于0.5外,还有一种规格化数也经常使用,就是使得尾数绝对值大于1、小于2,这种规格化数参考了十进制科学记数法的表示方法。 ---P27

1.57/128

57/128=0.4453125=0.0111001         原反补=0.0111001=0.111001*2^-1

S=0

E=-1    因为阶码要4位,且用补码表示。        E 原=1001 E补=1111

尾数为10位,且用补码表示        M=0111001000        

浮点规格化数=1111 0111001000

2.-69/128

-69/128=-0.5390625=-0.1000101 原=1.1000101 反=1.0111010 补=1.0111011

S=1

E=0 E补=0000

M补=1011101100

浮点规格化数=0000 1011101100

2.14 设有效信息为01011011.分别写出其奇校验码和偶校验码。如果接收方收到的有效信息为01011010,说明如何发现错误。

奇偶校验的编码规则是增加以为校验位P,使得最终的校验码中数字1的个数为奇数或偶数,其最小码距为2。      ---P44

原始数据(8位)奇校验码(9位)偶校验码(9位)
01011011010110110010110111

我不会

正确答案:如果接收方收到的x=010110100(只有1位出错,最后一个0是校验位),如果采用奇校验,接收方计算检错位G=1,表明数据一定发生了错误。如果采用偶校验,接收方计算检错位G=0,表明数据高概率正确。

2.16 由6个字符的7位ASCII字符排列,再加上水平和垂直偶校验位构成表2.27所示的行列结构(最后一列HP为水平偶校验位,最后一行VP为垂直偶校验位)

ASCII交叉校验
字符7位ASCII字符HP
30X1X200110
Y1100100X31
+X41010110
Y201X5X61111
D100X710X80
=0X9111X1011
VP00111X111X12

1.从水平方向看,x1和x2比特相同,x3的比特为1,x4的比特为0,x5和x6比特相反,x7和x8比特相同,x9和x10比特相反,x11、x12暂时未知

2.从垂直方向看,可以确定x4的比特为0,x1和x9比特相同,x2和x5比特相同,x6和x7比特相同,x10、x11暂时未知,x3和x8比特相反,x12暂时未知

3.垂直和水平对比,可以很轻易的得出:x4的比特为0,x3的比特为1,x8的比特为0,x7的比特为0,x6的比特为0,x5的比特为1,x2的比特为1,x1的比特为1,x9的比特为1,x10的比特为0

4.所以,x11的比特就为1,x12就为1

5.综上所述,x1=1,x2=1,x3=1,x4=0,x5=1,x6=0,x7=0,x8=0,x9=1,x10=0,x11=1,X12=1

6.Y1=1001001=73        Y2=0110111=55

查阅ASCII表:Y1=I        Y2=7

则x1、x2、x3、x4处的比特分别为1110;x5、x6、x7、x8处的比特分别为1000;x9、x10、x11、x12处的比特分别为1011;Y1和Y2处的字符分别为_I__7_

2.17 设8位有效信息为01101110,试写出它的海明校验码。给出过程,说明分组检测方式,并给出指错字及其逻辑表达式。如果接收方收到的有效信息变成01101111,说明如何定位错误并纠正错误。

由公式得,校验位r要有4位

海明码Hi123456789101112
/P1/P2/b1 0/P3/b2 1

/b3

1

/b4

0

/P4

/b5

1

/b6

1

/b7

1

/b8

0

P1=/b1+/b2+/b4+/b5+/b7=01011=1                   P2=/b1+/b3+/b4+/b6+/b7=01011=1

P3=/b2+/b3+/b4+/b8=1100=0                            P4=/b5+/b6+/b7+/b8=1110=1

海明码H=110011011110

如果收到的有效信息是01101111,再加上校验位,海明码H=110011011111

海明码Hi123456789101112
110011011111

指错字,假设一位错时纠错。

G1=/P1+/b1+/b2+/b4+/b5+/b7=101011=0

G2=/P2+/b1+/b3+/b4+/b6+/b7=101011=0

G3=/P3+/b2+/b3+/b4+/b8=01101=1

G4=/P4+/b5+/b6+/b7+/b8=11111=1

G4G3G2G1=1100

表明H12位出错!取值除了1就是0,所以只需要把H12的值改成0就行

2.18 设要采用CRC码传送数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环冗余校验码。若接收方收到的数据信息为x'=1101,说明如何定位错误并纠正错误。

M(x)=x^3+1

G(x)=x^3+x^2+1=1101

M(x)*2^3=x^6+x^3=1001000

按模2除法:1001000 % 1101 --->商Q(x)=1111,余数R(x)=011

最后得到的CRC码为:M(x)*2^3+R(x)=1001011

若接收方收到的数据信息为x'=1101,加上校验码=1101011

按模2除法:1101011 % 1101 --->1000+001 继续将001补零做除法=0010 % 1101 -->商=01,余数=001 不过我还不会看第几位出错

答案:经过两次运算余数为001,所以是第二位出错,将左侧起第二位的取反即可,也可通过查表法快速定位出错位置。

crc 校验错误_数据校验码 - 3.CRC校验

3.中国大学MOOC计算机组成原理(计算部分)

1.‎十进制数5对应的32位IEEE754 格式的机器数为 ()H (采用十六进制表示,填写答案时不需要写最后的H)

5=101=1.01*2^2

S=0

E=2+127=129=10000001

M=01 00000000000000000

f=0100 0000 1010 0000 0000 0000 0000 0000=40A00000H

2.字长5位的待编码二进制有效数据为10011,对它进行CRC编码时采用的生成多项式代码为1011,则得到的编码结果为(填写二进制形式)

M(x)=10011

G(x)=1011 

M(x)*2^3=10011000

按模2除法:10011000 % 1101 --->商Q(x)=10100,余数R(x)=100

最后得到的CRC码为:M(x)*2^3+R(x)=10011100

3.存放一个24*24点阵汉字,至少需要多少字节的存储空间 (只需要填写十进数)

24*24/8=72

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值