计算机组成原理课后习题(一)

这篇文章详细阐述了二进制数在计算机中表示整数和小数的各种方式,包括原码、反码、补码和移码的概念,以及在不同数据类型如定点整数、浮点数中的应用。还讨论了IEEE754单精度浮点数格式,并通过具体例子解释了转换过程和计算真值的方法。此外,提到了C语言中数据类型的转换及其对数值的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.由3个“1”和5个“0”组成的8位二进制补码,能表示的最小整数是()

【答案】

整数为负数,且绝对值最大的时候表示的整数最小

而因为负数数字是由原码的数字位直接体现的,因此补码需要取反

所以补码除了符号位,其他的地方要最小地表示

因此表示最小整数的补码为1000 0011

                                反码为1000 0010

                                原码为1111 1101,即-125

2.已知机器字长64位,定点整数,若采用原码表示,其最大值是()

【答案】

第一位是符号位,故数字为字长为63位,所以:

长64位的机器字能表示带符号的整数范围为[-2^63,2^63-1]

 3.已知定点小数,补码表示,其编码为:1.000 0000,则其真值为()

定点小数是纯小数,因此最高位为符号位,因此该数为负数

【答案】

 

由以上图可设该数为x,则有2 + x = 1.000 0000

得出该数为 -1

4.有如下C语言程序段:

        short si=-32767 ;
        unsigned short usi=si;

执行上述两条语句后,usi的值为()

【答案】

结合题干及选项可知,short为16位,其中1位为符号位剩下15位为数值位。因C语言中的数据在内存中为补码表示形式,si对应的补码二进制表示为: 1000,0000,0000,0001B。
最高位为符号位 = “1”,表示负数,后面15位为数值位。即 - 32767。

signed型数据转化为unsigned型数据时,符号位变为数据的一部分,即负数表示符号的位变为真值数值位,其数值位共16位,其编码为:

1000,0000,0000,0001B

对应的真值为32769

5.IEEE754单精度浮点数格式表示的数中,最小规格化正数是()

【答案】

 IEEE 754单精度浮点数的数符、阶码、尾数所占的位数分别是1、8、23。
真值转换公式:

     
最小正数:
        数符位:0,
        阶码E的取值范围是1- 254,取1,得e=1 -127 = - 126,
        尾数全为0,最终最小规格化正数为:1.0 × 2 ^ (-126)

 6.已知机器字长32位,对于定点整数中的机器零,请分别给出原码,反码,补码,移码的编码表示(要求用十六进制表示)。

原码:+0,[填空1]H
           -0,[填空2]H

补码:+0,[填空3]H

反码:+0:与原码一样
           -0:[填空4]H

移码: 0,[填空5]H

【答案】

①0000 0000 ②8000 0000 ③0000 0000 ④FFFF FFFF ⑤8000 0000

7.设机器字长为16位,定点整数N的编码为FFFEH,试计算其分别表示原码、反码、补码及移码时,对应的十进制真值各是多少?
(1)原码,对应的十进制真值为:[填空1];
(2)  补码,对应的十进制真值为:[填空2];
(3)反码,对应的十进制真值为:[填空3];
(4)移码,对应的十进制真值为:[填空4]。

【答案】
最高位为符号位,因此算真值的时候应该去掉符号位,再在最后的时候再加上

①-[111 1111 1111 1110]2 = -32766  

②补码转为原码后,为-[000 0000 0000 0010]2 = -2

③反码转为原码后,为-[000 0000 0000 0001]2 = -1

④移码转为原码后,为+[111 1111 1111 1110]2 = +32766

注意,移码转原码可以先转为补码再转为原码。然而转补码时,符号位取反,符号为+,此时的补码等于原码,因此为+[111 1111 1111 1110]2 = + 32766

8.设机器字长为16位,定点整数,试按要求给出对应的机器编码,要求用十六进制表示。

(1)补码:
最大值的补码:[填空1]H

最小值的补码:[填空2]H

(2)移码:
最大值的移码:[填空3]H

0的移码:[填空4]H

最小值的移码:[填空5]H

最高位为符号位

【答案】

①为最大值,因此符号位为0,故原码为0111 1111 1111 1111,其补码与原码一致,为7FFF H

为最小值,因此符号位为1,故原码为1111 1111 1111 1111,补码为1000 0000 0000 0001,即8001H

以上划线部分是错误的,最小值的补码由规定就是1000 0000 0000 0000,即1000H

另有例子:

推导: -128 =(-1)+(-127) = 原码 1000 0001+原码 1111 1111 =

补码 1111 1111 + 补码 1000 0001 = 补码 1000 0000。

也正是因此,8位带符号二进制的范围为-128~+127,因为1000 0000 表示的是128

③由最大值的补码,得出移码为1111 1111 1111 1111,即FFFFH

④0的补码为0,因此0的移码为1000 0000 0000 0000,即8000H

⑤由最小值的补码,得出移码为0000 0000 0000 0000,即0000H

9.设机器字长为8位,定点小数,试给出数N=-69/128对应的机器码编码,要求用二进制表示,其中符号位1位,数值位7位。
(1) N的二进制真值:
[填空1]
(2) N的原码表示:
[填空2]
(3) N的反码表示:
[填空3]
(4) N的补码表示:
[填空4]

【答案】

N=-69/128=-69/2^7

可以先求出分子69的二进制,再把小数点从右向左移动7位,再加上符号“-”

即N的二进制真值为:

N=-0.100,0101

原码表示:1.100,0101

反码表示:1.011,1010

补码表示:1.011,1011
 

10.设机器字长为16位,定点整数,数N=-1025,求其二进制真值以及对应的机器码编码,机器码要求用十六进制表示。

(1)N的二进制真值:        [填空1]H

(2)N的原码表示:            [填空2]H

(3)N的反码表示:            [填空3]H

(4)N的补码表示:            [填空4]H

(5)N的移码表示:            [填空5]H

【答案】

① - 100 0000 0001

② 1000 0100 0000 0001,即8401H

③ 1111 1011 1111 1110,即FBFEH

④ 1111 1011 1111 1111,即FBFFH

⑤ 0111 1011 1111 1111,即7BFFH

11.已知浮点数N的32位IEEE754标准存储格式为43940000H,求数N的十进制真值。
由题意,S,E,M为(二进制)︰

S=[填空1];
E=[填空2]
M=[填空3](末尾的0可略去)。因此,e=[填空4](十进制)代入公式,可求出N的十进制真值为:[填空5]

【答案】

由题N二进制表示为 0100 0011 1001 0100 0000 0000 0000 0000

由IEEE754标准,从左到右依次为SEM,S占1位,E占8位,其余位均为M

则N为 0 1000 0111 0010 1000 0000 0000 0000 000

因此 S = 0

E = 1000 0111

M = 001 0100 0000 0000 0000 0000 

e = E - 127,E 的十进制表示为135,因此(e)10 = 8

则:x = (-1)^s * 1.M * 2^e

          =1. 00101 * 2^8

          = (296)10

12.已知浮点数N的十进制真值为 - 6\tfrac{5}{8},试将其转换成32位IEEE754浮点数的存储格式(最终结果要求用十六进制表示)先将N转换成±1.M的形式,即: [填空1]×2^2
由此得,S=[填空2];E=[填空3](二进制)
M=[填空4],0000,0000,0000,0000
因此,N的存储格式为(用十六进制表示)︰[填空5]H

【答案】

① - 6\tfrac{5}{8}即 - 53/8 = -(110101)2 / 2^3

                           = -(110.101)2 = - (1.10101)2 * 2^2

② S = 1

③ e = E - 127,因此E = 129 = 1000 0001

④ M = 1 0101

⑤ 综上,N 为 1100 0000 1101 0100 0000 0000 0000 0000,即C0D40000H

13.已知补码的形式,求对应真值(用二进制表示)
(1)若[X]补=0.10010,则:
x=[填空1] B;
(2)若[X]补=1.10010,则:
x=[填空2] B;
(3)若[X]补=1.11111,则:
x=[填空3] B;
(4)若[X]补=1.00000,则:
x=[填空4]B。
(5)若[X]补=1.00001,则:
x=[填空5]B。

【答案】

① 0.01110

② - 0.01110

③ - 0.00001

④ - 1.00000

⑤ - 0.11111
注意:二进制真值直接写符号在数字前面,无符号位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值