计算机系统概论第二章

文章目录

第二章

2.1 一个n-bit数可以表示多少个不同的二进制数?

2^n个

2.2 如果采用二进制bit串来表示英语中的26个字母,至少需要多少个bit?如果还要区分大小写字母,又需要多少个bit?

2^5=32 表示26个字母需要5个bit
2^6=64 表示区分大小写的26的字母需要6个bit

2.3 a.假设某班级有400个学生,如果我们为每个学生分配一个唯一的二进制bit串,那么至少需要多少个bit来表示所有的学生?

2^9=512 表示400个学生,需要9个bit

.b.如果不再增加bit数,这个班最多还能增加多少个学生?

512-400=112 还可以增加112个学生

2.4 给定n位(bit),它可以表示多少个不同的无符号整数?范围是多大?

2^n 个无符号整数 范围是:0~2^n -1

2.5 如果用5-bit二进制串表示数值,写出数值7和-7分别对应的反码、符号位码和补码表示方式。

参考16页"补码"
7:00111
反码:00111
符号位码:00111
补码:00111
-7:11001
反码:11000
符号位码:10111
补码:11001

2.6 试用6-bit补码表示数值-32。

6-bit补码表示-32:100000

2.7 试列出4-bit二进制补码所能表示的所有整数。

0000:0
0001:1
0010:2
0011:3
0100:4
0101:5
0110:6
0111:7
1000:-8
1001:-7
1010:-6
1011:-5
1100:-4
1101:-3
1110:-2
1111 :-1

2.8 a.8-bit二进制补码能表示的最大正整数是多少?分别写出十进制和二进制数。

2^7-1
127
01111111

b.8-bit二进制补码能表示的具有最大绝对值的负数是多少?分别写出十进制和二进制数。

-2^7
-128
10000000

c.n-bit二进制补码能表示的最大正整数是多少?

2^(n-1)-1

d.n-bit二进制补码能表示的具有最大绝对值的负数是多少?

-2^(n-1)

2.9 如果用二进制补码方式表示摩尔常数6.0x1023,需要多少bit?

80位bit:01111111000011100001000010101111010001111100000111001000000000000000000000000000

2.10 将下面的二进制补码转换为十进制数:

a.1010:-6
b.01011010:90
c.11111110:-2
d.0011100111010011:14803

2.11将下面的十进制数转换为8-bit二进制补码:

a.102:01100110
b.64:01000000
c.33:00100001
d.-128:10000000
e.127:01111111

2.12二进制补码最后一位如果是0,那么这个数必然是偶数。如果二进制补码的最后两位都为0(例如二进制数01100),那么这种数有什么特点?

是4的倍数,因为这个数是左移两位就是4倍

2.13 请将下面的二进制数改写为8-bit数,且不允许改变其原有数值。

a.1010:11111010
b.011001:00011001
c.1111111000:11111000
d.01:00000001

2.14 计算下列二进制加法,结果仍然表示为二进制数。

a. 1011+0001:1100
b. 0000+1010:1010
c. 1100+0011:1111
d. 0101+0110:01011
e. 1111+0001:10000

2.15 在本章例2-5中,证明了一个二进制数左移1位等价于将该数值乘2。试问,如果将其右移1位,等价于什么操作呢?

右移一位等价于除2

2.16 计算以下8-bit加法的结果,并分别写出结果所对应的二进制和十进制数。

a. 7的反码加上-7的反码;11111111和-0
b. 7的符号位表示加上-7的符号位表示;10001110和-14
c. 7的补码加上-7的补码;00000000和0

2.17 计算以下二进制补码加法,并将结果转换为十进制形式。

a. 01+1011:1100和-4
b. 11+01010101:01010100和84
c. 0101+110:0011和3
d. 01+10:11和-1

2.18 计算以下无符号二进制数的加法,并将结果转换为十进制形式。

a. 01+1011:1100和12
b. 11+01010101:01011000和88
c. 0101+110:1011和11
d. 01+10:11和3

2.19 将十进制数-27分别转换为8-bit补码、16-bit补码和32-bit补码,并阐述符号扩展在这三种表达形式中的应用。

11100101
1111111111100101
11111111111111111111111111100101
符号扩展用于不同bit位的加法运算中

2.20 在以下4-bit补码运算中,其中哪些计算会产生溢出?请将操作数和计算结果分别改写为十进制方式予以验证。

a. 110+0011:结果1,不会溢出(英文版中,原题是1100+0011:结果-1,没有溢出)
b. 1100+0100:结果0,不会溢出
c. 0111+0001:结果-8,溢出,因为两个正数相加结果为负数
d. 1000-0001:结果7,溢出,因为两个负数相加结果为正数
e. 0111+1001:结果0,不会溢出

2.21 试描述在什么情况下,两个补码相加将产生溢出。

两个正数相加,或者两个负数相加

2.22 试给出两个16-bit补码相加产生溢出的例子。

0111 1111 1111 1111 + 0000 0000 0000 0001
1000 0000 0000 0000 - 0000 0000 0000 0001

2.23 试描述在什么情况下,两个无符号整数相加会产生溢出。

bit位数固定的时候,两个整数相加超过当前取值范围时。

2.24 试给出两个16-bit无符号数相加产生溢出的例子。

1111 1111 1111 1111 + 0000 0000 0000 0001
1111 1111 1111 1110 + 0000 0000 0000 0010

2.25 试解释,为什么在补码方式下负数和正数相加不会产生溢出?

因为正数和负数相加结果在取值范围之内。

2.26 将数值-64表示为二进制补码方式,并回答以下问题:

a. 最少需要多少bit?7个
b. 这些bit能够表示的最大正整数是多少(分别给出二进制和十进制数)?0111111和63
c. 这些bit能够表示的最大无符号整数是多少(分别给出二进制和十进制数)?1111111和127

2.27 LC-3是一个16-bit计算机,如果LC-3对补码0101010101010101和0011100111001111相加的结果为1000111100100100,请问该结果有问题吗?如果有,问题是什么?如果没有,为什么?

有问题,因为两个正数相加结果为负数

2.28 试阐述逻辑AND运算在什么条件下输出为1。

1 AND 1时结果为1

2.29填写真值表

X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1

2.30 求解下列逻辑运算结果,给出二进制表示。

a. 01010111 AND 11010111:01010111
b. 101 AND 110:100
c. 11100000 AND 10110100:10100000
d. 00011111 AND 10110100:00010100
e. (0011 AND 0110) AND 1101:0000
f. 0011 AND (0110 AND 1101):0000

2.31 试阐述逻辑OR运算在什么条件下输出为1。

0 OR 1
1 OR 0
1 OR 1

2.32 填写真值表

X Y X OR Y
0 0 0
0 1 1
1 0 1
1 1 1

2.33 求解下列逻辑运算结果:

a. 01010111 OR 11010111:11010111
b. 101 OR 110:111
c. 11100000 OR 10110100:11110100
d. 00011111 OR 10110100:10111111
e. (0101 OR 1100) OR 1101:1101
f. 0101 OR (1100 OR 1101):1101

2.34 求解下列逻辑运算结果:

a. NOT(1011) OR NOT(1100):0111
b. NOT(1000 AND (1100 OR 0101)):0111
c. NOT(NOT(1101)):1101
d. (0110 OR 0000) AND 1111:0110

2.35 试阐述,在本章例2-11中,屏蔽字的作用是什么?

不影响其他位的操作,通过屏蔽字仅对目标位进行操作。

2.36 参考本章例2-11,回答以下问题

(a) AND with 11111011
(b) OR with 01000100
© AND with 00000000
(d) OR with 11111111
(e)与00000100的忙碌模式隔离b2。然后将结果添加到自身中重复五次

2.37 假设n、m、s都是4-bit补码数,且s是n和m相加的结果。如果只允许使用2.6节中介绍的逻辑运算,如何判断n和m相加的结果是否溢出?编写一个程序,输入n、m和s的值,如果n和m相加溢出,则输出1000;如果没有溢出,则输出0000。

第一步:通过AND将n和m的左侧第一位bit提取出来,在通过XOR比较两者是否相同,如果不相同则表示正数和负数相加,此时肯定不会溢出。
如果 (n AND 1000) XOR (m AND 1000) = 1000则返回0000表示不会溢出,否则继续判断
第二步:左侧第一位bit相同,如果两数相加没有溢出,则s的左侧第一位bit应该和n、m相同,如果相同则表示没有溢出,如果不同,则表示溢出。
如果(n AND 1000) XOR (s AND 1000) = 1000则返回0000表示没有溢出
如果(n AND 1000) XOR (s AND 1000) = 0000则返回1000表示溢出

2.38 假设n、m、s都是4-bit无符号整数,s是n和m相加的结果。如果只允许使用2.6节中介绍的逻辑运算,如何判断n和m相加的结果是否溢出?编写一个程序,输入n、m和s的值,如果n和m相加溢出,则输出1000;如果没有溢出,则输出0000。

第一步 (n OR m) AND 1000,如果为0000则代表肯定没有溢出直接返回,
第二步 ((n OR m) AND 1000) XOR (s AND 1000)将结果直接返回

2.39 将以下十进制数转换成IEEE浮点数方式。

a. 3.75:0 10000000 11100000000000000000000
b.-(55+23/64) :1 10000100 10111010111000000000000
c. 3.1415927:0 10000000 10010010000000000000000(近似值,可以往下计算更加精确的值)
d. 64 000:0 10001110 11110100000000000000000### 2.40 将以下IEEE浮点数转换为十进制数。
a. 0 10000000 00000000000000000000000:2
b. 1 10000011 0001000000000000000000:-17
c. 0 11111111 00000000000000000000000:2^128
d. 1 10000000 10010000000000000000000:-25/8

2.41 a. 32-bit IEEE浮点数能表示的最大数值是多少?

2^129

b. 32-bit IEEE浮点数能表示的最小数值是多少?

-2^-149

2.42 一个程序员编写了一个两数求和的程序。但是运行后发现,5和8相加的结果是字符“m”,请分析造成这种奇怪现象的可能原因。

可能将5和8当作字符来相加,因为5和8对应的ASCII码分别为53和56,相加刚好是109对应的ASCII码中的字母m。

2.43 将以下十六进制ASCII码改写为8-bit二进制ASCII码。

a. x48656c6c6f21:Hello!
b. x68454c4cf21:hELLO!
c. x436f6d70757465727321:Computers!
d. x4c432d32:LC-2

2.44 如果要将数字3的二进制表示转传成字符“3”的ASCII码,请问如何操作?那么,数字4到字符“4”的转换呢?试问,是否任意数字都可以通过这种操作来转换?

可以通过3+47转换成字符“3”,只支持数字0~9的转换

2.45 将以下无符号数从二进制方式转换为十六进制方式。

a. 1101 0001 1010 1111:xd1af
b. 001 1111:x1f
c. 1:x1
d. 1110 1101 1011 0010:xedb2

2.46 将以下十六进制数转换为二进制形式。

a. x10:0001 0000
b. x801:1000 0000 0001
c. xF731:1111 0111 0011 0001
d. x0F1E2D:0000 1111 0001 1110 0010 1110
e. xBCAD:1011 1100 1010 1101

2.47 将以下十六进制补码转换为十进制数。

a. xF0:-16
b. x7FF:2^11-1或2047
c. x16:22
d. x8000:-2^15或-32768

2.48 将以下十进制数转换为二进制补码及其十六进制表示。

a. 256
b. 111
c. 123 456 789
d. -44

2.49 下面是十六进制表示的补码之间的运算。请问,能否不将它们展开为二进制方式,而直接计算各式的值,结果仍然采用十六进制表示。

a. x025B + x26DE
b. x7D96 + xF0A0
c. xA397 + xA35D
d. x7D96 + x7412
e. 对c和d的计算结果有什么补充吗?

2.50 下面是十六进制补码的逻辑运算。请问,能否不将它们展开为二进制方式,而直接计算各式的值,结果仍然采用十六进制表示。

a. x5478 AND Xfdea
b. xABCD AND x1234
c. NOT(NOT(xDEFA)) AND (NOT(xFFFF))
d. x00FF XOR x325C

2.51 试写出以下数值的十六进制形式。

a. 25 675
b. 675.625,IEEE 754浮点数标准形式
c. ASCII字符串:Hello

2.52 假设十六进制数为x434f4d50和x55544552.请填写下表,将这俩个数用不同的方式表示.

x434F4D50 x55544552
Unsigned Binary 1,129,270,608 1,431,586,130
1’s Complement 1,129,270,608 1,431,586,130
2’s Complement 1,129,270,608 1,431,586,130
IEEE 754 floating point 207.302001953125 14,587,137,097,728
ASCII String COMP UTER

2.53 填写真值表

A B Q1 Q2
0 0 1 0
0 1 1 1
1 0 1 1
1 1 0 1
Q2 = A OR B

2.54 填写真值表

X Y Z Q1 Q2
0 0 0 0 1
0 0 1 0 1
0 1 0 0 1
0 1 1 0 1
1 0 0 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 0

2.55 我们已学过二进制(base-2)和十六进制(base-16)的数字表示方法。如果是无符号base-4方式,我们称之为四进制(quad)。在四进制中,每个数字的表示可以是0、1、2或3。试问:

a. 3位四进制数能表达的最大无符号数值是多少(请用十进制回答)?
b. n位四进制数能表达的最大无符号数值是多少(提示:答案必须以n为参数)?
c. 计算无符号四进制数023和221相加的结果。
d. 求出十进制数42的四进制表示。
e. 求出将四进制数123.3转换为二进制方式的表示。
f. 将四进制数123.3转换为IEEE浮点数表示。
g. 假设一个黑箱函数,该黑箱的输入是一个m位四进制数,输出是一位四进制数。试问,该黑箱函数有多少种可能的实现(提示:排列组合,对于任意一个特定输入,有4种可能输出)?
答案:
(a) 63
(b)4n – 1
©310
(d)222
(e)11011.11
(f)0100 0001 1101 1110 0000 0000 0000 0000
(g)4(4^m)

2.56 试定义一种新的8-bit浮点数各式,符号位1-bit、指数字段4-bit(校正值为7,即bias=7)、尾数3-bit。试问,十六进制数xE5转换为该8-bit浮点数的结果是什么?最后数值(十进制)是多少?

-1.101 x 2(12−7) = -52

  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值