计算机组成原理笔记03

您所在的位置:网站首页 11011000的原码 计算机组成原理笔记03

计算机组成原理笔记03

2024-07-16 04:36| 来源: 网络整理| 查看: 265

计算机组成原理笔记03:

做题笔记1

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

1.1 1.2 1.3 1.4 1.5 1.6 在看题之前,最好先看这篇定点运算,写的特别清晰明了

2.课后练习 3.2 选择题 1.一个C语言程序在一台32位机器上运行,程序中定义了3个变量x、y、z,其中x和z为int型,y为short型。当x=127,y=-9时,执行赋值语句z=x+y后,x、y、z的值分别是____D____。

A. x=0000007FH,y=FFF9H,z=00000076H B. x=0000007FH,y=FFF9H,z=FFFF0076H C. x=0000007FH,y=FFF7H,z=FFFF0076H D. x=0000007FH,y=FFF7H,z=00000076H

1.int占4个字节,用32位补码表示,short占两个字节,用16位补码表示。 2.目前计算机中整数采用补码进行存储、表示和运算。 3.C语言中,一般情况下,当计算类型不同时,小类型会转为大类型再计算 4.有符号小字长转大字长,机器码符号扩展

1.当x=127,[x]原=0000 0000 0000 0000 0000 0000 0111 1111=0000007FH y=-9,[y]原=1000 00000 0000 1001=8009H 2.x是个正数,所以[x]原=[x]反=[x]补=0000007FH y是个负数,[y]补=1111 1111 1111 0111=FFF7H 3.因为引用3,所以[y]补=FFFFFFF7H 4.由引用4得z=[x]补+[y]补=0000007FH+FFFFFFF7H=(1 舍去)00000076H

2.假定有4个整数用8位补码分别表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位的寄存器中,则下列运算会发生溢出的是___B______。

A. r1 * r2 B. r2 * r3 C. r1 * r4 D. r2 * r4 点这个>>>百度题库题目 疑似会做了,从解析来看,将其转成真值,再计算乘积,只要超过范围就说明运算发生溢出 r1=-2,r2=-14,r3=-112,r4=-8 A.r1 * r2=28 B. r2 * r3=1568 C. r1 * r4=16 D. r2 * r4=112 8位的寄存器,说明能存256个数,第一位是符号位,那么范围就是-128~127

3.某字长为8位的计算机中,已知整型变量x、y的机器数分别为[x]补=11110100,[y]补=10110000。若整型变量z=2 * x + y / 2,则z的机器数为__A__。

A. 11000000 B. 00100100 C. 10101010 D.溢出 又是一题,连题目都没看懂 (╥_╥) 点这个>>>百度题库题目 从解析来看,感觉这题主要是考算数移位,* 2就是左移1位,/2就是右移1位,所以2 * x =11101000,y/2=11011000,z=11101000+11011000=11000000,转成十进制验证,x=-24,y=-40,z=-64=11000000

4.假定带符号整数采用补码表示,若int型变量x和y的机器数分别是FFFF FFDFH和0000 0041H,则x、y的值以及x-y的机器数分别是____C____。

A. x=-65,y=41,x-y的机器数溢出 B. x=-33,y=65,x-y的机器数为FFFF FF9DH C. x=-33,y=65,x-y的机器数为FFFF FF9EH D. x=-65,y=41,x-y的机器数为FFFF FF96H [x]原=1000 0000 0000 0000 0000 0000 0010 0001=-33 [y]原=1+4*16=65 [-y]补=1111 1111 1111 1111 1111 1111 1011 1111=FFFF FFBFH [x-y]=FFFF FFDF+FFFF FFBF=FFFF FF9EH

5.整数x的机器数为1101 1000,分别对x进行逻辑右移1位和算数右移1位操作,得到的机器数各是__B____。

A. 1110 1100、1110 1100 B. 0110 1100、1110 1100 C. 1110 1100、0110 1100 D. 0110 1100、0110 1100

逻辑左移和算数左移结果一致,只需要低位填0,高位移丢 逻辑右移只需要高位填0,低位移丢 算数右移分两种情况,正数时高位填0,低位移丢;负数时高位填1,低位移丢

逻辑右移1位0110 1100 算数右移1位1110 1100

6.浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍入和判断溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=2^7 * 29/32,y=2^5 * 5/8,则用浮点加法计算X+Y的最终结果是_D___。

A. 001111100010 B. 001110100010 C. 010000010001 D. 发生溢出 步骤题目里都已经给出来了,首先将XY都转成补码 X=2^70.90625=2 ^70.11101---->[X]浮=00111,00.11101 Y=2^50.625=2 ^50.101---------->[Y]浮=00101,00.10100 1.对阶 -[Y]补=11011 [X]补-[Y]补=[X]补+[-Y]补=00111+11011=00010=2 >0 小阶对大阶,Y阶码+2,尾数右移两位 [Y]浮=00111,00.0010100附加位,既然是0就直接舍去 2.尾数运算 [X+Y]浮=00111,01.00010 3.规格化 [X+Y]浮=01000,00.100010 (右归1位,阶码+1) 4.舍入 附加位0,直接舍去 5.判断溢出

对浮点运算而言,当阶码出现溢出时才表示运算结果溢出,即当阶码的符号位为01或10时才表示运算结果溢出。—P84

[X+Y]浮=01000,00.10001 符号位为01,那么发生了溢出

3.4 已知x和y,用变形补码计算x+y,并判断是否溢出。

[x]补+[y]补=[x+y]补= (mod M) - - -P60 [x-y]补=[x]补+[-y]补=[x]补-[y]补 (mod M) - - -P62 变形补码即用两个二进制位来进行数据的符号表示。正数的符号以’00’表示,负数的符号以’11’表示。一般称左边的符号位为第1符号位,右边的为第2符号位。 运算结果符号位为’01’,第1符号位代表正确符号位,运算发生了上溢。 运算结果符号位为’10’,第1符号位代表正确符号位,运算发生了下溢。 运算结果符号位为’11’,运算未发生溢出。 - - -P64

1.x=0.11010,y=0.10111。

[x]补=00.11010 [y]补=00.10111 [x+y]补=00.11010 +00.10111 =01.10001 符号位是01 正溢出

2.x=0.11101,y=-0.10100。

[x]补=00.11101 [y]补=11.01100 [x+y]补=00.11101 +11.01100 =00.01001 符号位是00 未溢出

3.x=-0.10111,y=-0.11000。

[x]补=11.01001 [y]补=11.01000 [x+y]补=11.01001 +11.01000 =10.10001 符号位是10 负溢出

3.5 已知x和y,用变形补码计算x-y,并判断是否溢出。 1.x=0.11011,y=0.11101。

[x]补=00.11011 [y]补=00.11101 [-y]补=11.00011 [x-y]补=00.11011+11.00011=11.11110 符号位是11 未溢出

2.x=0.10111,y=0.11110。

[x]补=00.10111 [y]补=00.11110 [-y]补=11.00010 [x-y]补=00.10111+11.00010=11.11001 符号位是11 未溢出

3.x=-0.11111,y=-0.11001。

[x]补=11.00001 [y]补=11.00111 [-y]补=00.11001 [x-y]补=11.00001+00.11001=11.11010 符号位是11 未溢出

3.6 用原码一位乘法计算x*y。

1.乘积符号与两个操作数符号存在异或关系。即Pf=x0 异或 y0 2.乘积的数值可由被乘数与乘数的绝对值之积求得。即|P|=|x|*|y| - - -P69

1.x=-0.11111,y=0.11101。 3.6.1.1笔算乘法

[x]原=1.11111 [y]原=0.11101 符号位=0 异或 1=1 |x| * |y|=0.11111*0.11101= 0.1110000011 [x×y]原=1.1110000011 [x×y]=-0.1110000011 在这里插入图片描述

3.6.1.2原码乘法器计算方法

在这里插入图片描述

2.x=-0.11010,y=-0.01011。

[x]原=1.11010 [y]原=1.01011 符号位=1 异或 1=0 |x| * |y|=0.11010*0.01011= 0.0100011110 [x×y]原=0.0100011110 [x×y]=0.0100011110

3.7 用补码一位乘法计算x*y。

根据推导Booh算法得到补码一位乘法算法: 1.乘数采用单符号位,末位增设附加位Yn+1,初值为0. 2.利用Yn+1与Yn的差值判断各步的具体运算,差值为1时,累加上[x]补;差值为0时,累加上0;差值为-1时,累加上[-x]补。累加完成后需要进行算数右移的操作,初值为0。 3.按照上述算法进行n+1次累加操作,n次右移操作即可完成乘积计算。 4.补码乘法中,符号位参与运算,不需要单独计算符号位。- - -P73

1.x=0.10110,y=-0.00011。

在这里插入图片描述

2.x=-0.011010,y=-0.011101。

在这里插入图片描述

3.8 用原码不恢复余数法计算x/y。 1.x=0.10101,y=0.11011。

这题我算出来跟答案不一样,然后百度了一圈,找到了3种答案,都贴上来,自己判断吧,我是觉得我的做法没毛病

答案1 答案2 答案3 书上的答案:在这里插入图片描述

在这里插入图片描述

2.x=-0.10101,y=0.11000。

在这里插入图片描述

3.9 设数的阶码为3位,尾数为6位(均不包括符号位),按机器补码浮点运算规则完成下列[x+y]补运算。 1.x=2^011 *(0.100100) ,y=2^010 *(-0.011010)。

首先将XY都转成补码 X=2^011 *(0.100100)---->[X]浮=00011,00.100100 Y=2^010 *(-0.011010)---------->[Y]浮=00010,11.100110 1.对阶 -[Y]阶补=11110 [X]阶补-[Y]阶补=[X]阶补+[-Y]阶补=00011+11110=00001=1 >0 小阶对大阶,Y阶码+1,尾数右移1位 [Y]浮=00011,11.110011 2.尾数运算 [X+Y]浮=00011,00.010111 3.规格化 [X+Y]浮=0010,00.101110 (左归1位,阶码-1) 4.溢出判断 阶码符号位为00,未溢出 [X+Y]补=0010,00.101110

2.x=2^-101 *(-0.100010) ,y=2^-100 *(-0.010110)。

首先将XY都转成补码 X=2^-101 *(-0.100100)---->[X]浮=11011,11.011110 Y=2^-100 *(-0.011010)---------->[Y]浮=11100,11.101010 1.对阶 -[Y]阶补=00100 [X]阶补-[Y]阶补=[X]阶补+[-Y]阶补=11011+00100=11111=-1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3