- 一个n-bit数可以表示多少个不同的二进制数?
2n个 - 如果采用二进制bit串来表示英语中的26个字母,至少需要多少个bit?如果还要区分大小写字母,又需要多少个bit?
25=32 表示26个字母需要5个bit
26=64 表示区分大小写的26的字母需要6个bit - a.假设某班级有400个学生,如果我们为每个学生分配一个唯一的二进制bit串,那么至少需要多少个bit来表示所有的学生?
29=512 表示400个学生,需要9个bit
b.如果不再增加bit数,这个班最多还能增加多少个学生?
512-400=112 还可以增加112个学生 - 给定n位(bit),它可以表示多少个不同的无符号整数?范围是多大?
2n个无符号整数 范围是:0~2n-1 - 如果用5-bit二进制串表示数值,写出数值7和-7分别对应的反码、符号位码和补码表示方式。
参考16页"补码"
7:00111
反码:00111
符号位码:00111
补码:00111
-7:11001
反码:11000
符号位码:10111
补码:11001 - 试用6-bit反码表示数值-32。(英文版本:“Write the 6-bit 2’s complement representation of -32.”,翻译错了吧,应该是要求用补码表示数值-32吧 )
6-bit补码表示-32:100000 - 试列出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 - a.8-bit二进制补码能表示的最大正整数是多少?分别写出十进制和二进制数。
27-1
127
01111111
b.8-bit二进制补码能表示的具有最大绝对值的负数是多少?分别写出十进制和二进制数。
-27
-128
10000000
c.n-bit二进制补码能表示的最大正整数是多少?
2n-1-1
d.n-bit二进制补码能表示的具有最大绝对值的负数是多少?
-2n-1 - 如果用二进制补码方式表示摩尔常数6.0x1023,需要多少bit?
80位bit:01111111000011100001000010101111010001111100000111001000000000000000000000000000 - 将下面的二进制补码转换为十进制数:
a.1010:-6
b.01011010:90
c.11111110:-2
d.0011100111010011:14803 - 将下面的十进制数转换为8-bit二进制补码:
a.102:01100110
b.64:01000000
c.33:00100001
d.-128:10000000
e.127:01111111 - 二进制补码最后一位如果是0,那么这个数必然是偶数。如果二进制补码的最后两位都为0(例如二进制数01100),那么这种数有什么特点?
是4的倍数,因为这个数是左移两位就是4倍 - 请将下面的二进制数改写为8-bit数,且不允许改变其原有数值。
a.1010:11111010
b.011001:00011001
c.1111111000:11111000
d.01:00000001 - 计算下列二进制加法,结果仍然表示为二进制数。
a. 1011+0001:1100
b. 0000+1010:1010
c. 1100+0011:1111
d. 0101+0110:01011
e. 1111+0001:10000 - 在本章例2-5中,证明了一个二进制数左移1位等价于将该数值乘2。试问,如果将其右移1位,等价于什么操作呢?
右移一位等价于除2 - 计算以下8-bit加法的结果,并分别写出结果所对应的二进制和十进制数。
a. 7的反码加上-7的反码;11111111和-0
b. 7的符号位表示加上-7的符号位表示;10001110和-14
c. 7的补码加上-7的补码;00000000和0 - 计算以下二进制补码加法,并将结果转换为十进制形式。
a. 01+1011:1100和-4
b. 11+01010101:01010100和84
c. 0101+110:0011和3
d. 01+10:11和-1 - 计算以下无符号二进制数的加法,并将结果转换为十进制形式。
a. 01+1011:1100和12
b. 11+01010101:01011000和88
c. 0101+110:1011和11
d. 01+10:11和3 - 将十进制数-27分别转换为8-bit补码、16-bit补码和32-bit补码,并阐述符号扩展在这三种表达形式中的应用。
11100101
1111111111100101
11111111111111111111111111100101
符号扩展用于不同bit位的加法运算中 - 在以下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,不会溢出 - 试描述在什么情况下,两个补码相加将产生溢出。
两个正数相加,或者两个负数相加 - 试给出两个16-bit补码相加产生溢出的例子。
0111 1111 1111 1111 + 0000 0000 0000 0001
1000 0000 0000 0000 - 0000 0000 0000 0001 - 试描述在什么情况下,两个无符号整数相加会产生溢出。
bit位数固定的时候,两个整数相加超过当前取值范围时。 - 试给出两个16-bit无符号数相加产生溢出的例子。
1111 1111 1111 1111 + 0000 0000 0000 0001
1111 1111 1111 1110 + 0000 0000 0000 0010 - 试解释,为什么在补码方式下负数和正数相加不会产生溢出?
因为正数和负数相加结果在取值范围之内。 - 将数值-64表示为二进制补码方式,并回答以下问题:
a. 最少需要多少bit?7个
b. 这些bit能够表示的最大正整数是多少(分别给出二进制和十进制数)?0111111和63
c. 这些bit能够表示的最大无符号整数是多少(分别给出二进制和十进制数)?1111111和127 - LC-3是一个16-bit计算机,如果LC-3对补码0101010101010101和0011100111001111相加的结果为1000111100100100,请问该结果有问题吗?如果有,问题是什么?如果没有,为什么?
有问题,因为两个正数相加结果为负数 - 试阐述逻辑AND运算在什么条件下输出为1。
1 AND 1时结果为1 - 略。
- 求解下列逻辑运算结果,给出二进制表示。
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 - 试阐述逻辑OR运算在什么条件下输出为1。
0 OR 1
1 OR 0
1 OR 1 - 略。
- 求解下列逻辑运算结果:
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 - 求解下列逻辑运算结果:
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-11中,屏蔽字的作用是什么?
不影响其他位的操作,通过屏蔽字仅对目标位进行操作。 - 略。
- 假设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表示溢出 - 假设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)将结果直接返回 - 将以下十进制数转换成IEEE浮点数方式。
a. 3.75:0 10000000 11100000000000000000000
b. − 55 23 64 -55\frac{23}{64} −556423:1 10000100 10111010111000000000000
c. 3.1415927:0 10000000 10010010000000000000000(近似值,可以往下计算更加精确的值)
d. 64 000:0 10001110 11110100000000000000000 - 将以下IEEE浮点数转换为十进制数。
a. 0 10000000 00000000000000000000000:2
b. 1 10000011 0001000000000000000000:-17
c. 0 11111111 00000000000000000000000:2128
d. 1 10000000 10010000000000000000000: − 25 8 -\frac{25}{8} −825 - a. 32-bit IEEE浮点数能表示的最大数值是多少?2129
b. 32-bit IEEE浮点数能表示的最小数值是多少?-2-149 - 一个程序员编写了一个两数求和的程序。但是运行后发现,5和8相加的结果是字符“m”,请分析造成这种奇怪现象的可能原因。
可能将5和8当作字符来相加,因为5和8对应的ASCII码分别为53和56,相加刚好是109对应的ASCII码中的字母m。 - 将以下十六进制ASCII码改写为8-bit二进制ASCII码。
a. x48656c6c6f21:Hello!
b. x68454c4cf21:hELLO!
c. x436f6d70757465727321:Computers!
d. x4c432d32:LC-2 - 如果要将数字3的二进制表示转传成字符“3”的ASCII码,请问如何操作?那么,数字4到字符“4”的转换呢?试问,是否任意数字都可以通过这种操作来转换?
可以通过3+47转换成字符“3”,只支持数字0~9的转换 - 将以下无符号数从二进制方式转换为十六进制方式。
a. 1101 0001 1010 1111:xd1af
b. 001 1111:x1f
c. 1:x1
d. 1110 1101 1011 0010:xedb2 - 将以下十六进制数转换为二进制形式。
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 - 将以下十六进制补码转换为十进制数。
a. xF0:-16
b. x7FF:211-1或2047
c. x16:22
d. x8000:-215或-32768 - 将以下十进制数转换为二进制补码及其十六进制表示。
a. 256
b. 111
c. 123 456 789
d. -44 - 下面是十六进制表示的补码之间的运算。请问,能否不将它们展开为二进制方式,而直接计算各式的值,结果仍然采用十六进制表示。
a. x025B + x26DE
b. x7D96 + xF0A0
c. xA397 + xA35D
d. x7D96 + x7412
e. 对c和d的计算结果有什么补充吗? - 下面是十六进制补码的逻辑运算。请问,能否不将它们展开为二进制方式,而直接计算各式的值,结果仍然采用十六进制表示。
a. x5478 AND Xfdea(英文版是xFDEA)
b. xABCD AND x1234
c. NOT(NOT(xDEFA)) AND (NOT(xFFFF))
d. x00FF XOR x325C - 试写出以下数值的十六进制形式。
a. 25 675
b. 675.625,IEEE 754浮点数标准形式
c. ASCII字符串:Hello - 略。
- 略。
- 略。
- 我们已学过二进制(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种可能输出)? - 试定义一种新的8-bit浮点数各式,符号位1-bit、指数字段4-bit(校正值为7,即bias=7)、尾数3-bit。试问,十六进制数xE5转换为该8-bit浮点数的结果是什么?最后数值(十进制)是多少?
参考:https://github.com/QSCTech/zju-icicles/blob/master/计算机系统概论/作业答案/ch02_complete.pdf