《计算机科学导论》第二章课后作业解答(个人版)
复习题
1. 定义一个数字系统:
数字系统是一种表示和处理数字的方法,用于表示数值和进行数学运算。它由数字集合、基数(底)、符号集合和表示规则组成。在数字系统中,数值由一系列数字和符号按照一定的规则排列组合而成。
2. 辨析位置化和非位置化数字系统:
- 位置化数字系统:在这种数字系统中,每个数位的位置具有不同的权重,数值的大小由每个数位上的数字与其权重相乘后相加得到。常见的十进制、二进制、八进制和十六进制系统都属于位置化数字系统。
- 非位置化数字系统:在这种数字系统中,数位的位置对数值的大小没有影响,每个数位的数字都有独立的含义。这种系统的代表是罗马数字,如I、V、X等。非位置化数字系统较为古老,现代计算机中很少使用。
3. 定义位置化数字系统中的底或基数。位置化数字系统中,底与符号的数量有什么关系?
位置化数字系统中的底或基数是指用于表示数值的不同数字的数量。例如,十进制系统的基数是10,因为它使用了0到9这10个不同的数字。二进制系统的基数是2,它只使用了0和1这两个数字。八进制系统的基数是8,十六进制系统的基数是16。
在一个位置化数字系统中,基数的大小决定了能够用于表示数值的不同数字的数量。基数为n的位置化数字系统可以用n个不同的数字来表示数值,分别是0到(n-1)。例如,十进制系统的基数是10,它使用了0到9这10个数字。底为n的位置化数字系统中,每个数位上的数字可以是0到(n-1)之间的任意值。
4. 简述十进制系统。为什么称作十进制?该系统的底是多少?
十进制系统是一种常用的位置化数字系统,使用了0到9这10个不同的数字来表示数值。它是我们日常生活中最常见的数字系统。
称作十进制的原因是因为它的基数是10。每个数位的权重按照10的幂次递增,从右到左依次为1、10、100、1000,依此类推。
5. 简述二进制系统。为什么称作二进制?该系统的底是多少?
二进制系统是一种位置化数字系统,使用了0和1这两个不同的数字来表示数值。它在计算机科学和数字电子领域中得到广泛应用。
称作二进制的原因是因为它的基数是2。每个数位的权重按照2的幂次递增,从右到左依次为1、2、4、8,依此类推。
6. 简述八进制系统。为什么称作八进制?该系统的底是多少?
八进制系统是一种位置化数字系统,使用了0到7这八个不同的数字来表示数值。
称作八进制的原因是因为它的基数是8。每个数位的权重按照8的幂次递增,从右到左依次为1、8、64、512,依此类推。
7. 简述十六进制系统。为什么称作十六进制?该系统的底是多少?
十六进制系统是一种位置化数字系统,使用了0到9和A到F(或小写的a到f)这十六个不同的数字来表示数值。这种系统在计算机科学和编程中常被用于表示二进制数的更紧凑形式。
称作十六进制的原因是因为它的基数是16。每个数位的权重按照16的幂次递增,从右到左依次为1、16、256、4096,依此类推。
8. 为什么二进制和十六进制互换很容易?
二进制和十六进制互换很容易是因为二进制的每4位对应于十六进制的1位。在十六进制中,每个数位可以用0到15之间的数来表示,而在二进制中,每个数位可以用0或1来表示。因此,将四位的二进制数转换为一个十六进制数时,只需将它们对应的十六进制表示写在一起即可。同样地,将一个十六进制数转换为四位的二进制数时,只需将每个十六进制数位的二进制表示写在一起即可。
9. 十六进制系统中1个数码表示二进制系统中的几位?
十六进制系统中,1个数码表示二进制系统中的4位。十六进制中的每个数位可以用0到15之间的数来表示,而二进制中的每个数位可以用0或1来表示。由于2^4=16,所以十六进制的每个数码可以表示四位的二进制数。
10. 八进制系统中1个数码表示二进制系统中的几位?
八进制系统中,1个数码表示二进制系统中的3位。八进制中的每个数位可以用0到7之间的数来表示,而二进制中的每个数位可以用0或1来表示。由于2^3=8,所以八进制的每个数码可以表示三位的二进制数。
练习题
1.将下列二进制数转换为十进制数,不用计算器并写出计算过程:
a.(0 1101)2
0×24+1×23+1×22+0×21+1×20=13
b.(1011 000)2
1×26+0×25+1×24+1×23+0×22+0×21+0×20=88
c.(01 1110.01)2
0×25+1×24+1×23+1×22+1×21+0×20+0×2-1+1×2-2=30.25
d.(11 1111.111)2
1×25+1×24+1×23+1×22+1×21+1×20+1×2-1+1×2-2+1×2-3=63.875
2.将下列十六进制数转换为十进制数,不用计算器并写出计算过程:
a.(AB2)16
10×162+11×161+2×160=2738
b.(123)16
1×162+2×161+3×160=291
c.(ABB)16
10×162+11×161+11×160=2747
d.(35E.E1)16
3×162+5×161+14×160+14×16-1+1×16-2=862.88(保留两位小数)
3.将下列八进制数转换为十进制数,不用计算器并写出计算过程:
a.(237)8
2×82+3×81+7×80=159
b.(2731)8
2×83+7×82+3×81+1×80=1497
c.(617.7)8
6×82+1×81+7×80+7×8-1=399.875
d.(21.11)8
2×81+1×80+1×8-1+1×8-2=17.14(保留两位小数)
4.将下列十进制数转换为二进制数,不用计算器并写出计算过程:
a.1234
1234 → 617 → 308 → 154 → 77 → 38 → 19 → 9 → 4 → 2 → 1
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 1 0 0 1 0 1 1 0 0 1
故结果为(100 1101 0010)2
b.88
88 → 44 → 22 → 11 → 5 → 2 → 1 → 0
↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 0 1 1 0 1
故结果为(101 1000)2
c.124.02
124 → 62 → 31 → 15 → 7 → 3 → 1 → 0
↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 1 1 1 1 1
0.02 → 0.04 → 0.08 → 0.16 → 0.32 → 0.64 → 0.28
↓ ↓ ↓ ↓ ↓ ↓
0 0 0 0 0 1
故结果为(111 1100.0000 01)2(保留6位小数)
d.14.56
14 → 7 → 3 → 1 → 0
↓ ↓ ↓ ↓
0 1 1 1
0.56 → 0.12 → 0.24 → 0.48 → 0.96 → 0.92
↓ ↓ ↓ ↓ ↓ ↓
1 0 0 0 1 1
故结果为(1110.1000 11)2(保留6位小数)
5.将下列十进制数转换为八进制数,不用计算器并写出计算过程:
a.1156
1156 → 144 → 18 → 2 → 0
↓ ↓ ↓ ↓
4 0 2 2
故结果为(2204)8
b.99
99 → 12 → 1 → 0
↓ ↓ ↓
3 4 1
故结果为(143)8
c.11.4
11 → 1 → 0
↓ ↓
3 1
0.4 → 0.2 → 0.6 → 0.8 → 0.4
↓ ↓ ↓ ↓
3 1 4 6
故结果为(13.3146)8(保留4位小数)
d.72.8
72 → 9 → 1 → 0
↓ ↓ ↓
0 1 1
0.8 → 0.4 → 0.2 → 0.6 → 0.8
↓ ↓ ↓ ↓
6 3 1 4
故结果为(110.6314)8(保留4位小数)
6.将下列十进制数转换为十六进制数,不用计算器并写出计算过程:
a.567
567 → 35 → 2 → 0
↓ ↓ ↓
7 3 2
故结果为(237)16
b.1411
1411 → 88 → 5 → 0
↓ ↓ ↓
3 8 5
故结果为(583)16
c.12.13
12 → C
0.13 → 0.08 → 0.28 → 0.48 → 0.68
↓ ↓ ↓ ↓
2 1 4 7
故结果为(C.2147)16(结果保留4位小数)
d.16.5
16 → 1 → 0
↓ ↓
0 1
0.5 → 0
↓
8
故结果为(10.8)16
7.将下列八进制数转换为十六进制数,不用计算器并写出计算过程:
a.(514)8
(514)8 → (101 001 100)2 → (0001 0100 1100)2 → (14C)16
b.(411)8
(411)8 → (100 001 001)2 → (0001 0000 1001)2 → (109)16
c,(13.7)8
(13.7)8 → (001 011 .111)2 → (1011 ,1110)2 → (B,E)16
d.(1256)8
(1256)8 → (001 010 101 110)2 → (0010 1010 1110)2 → (2AE)16
8.将下列十六进制数转换为八进制数,不用计算器并写出计算过程:
a.(51A)16
(51A)16 → (0101 0001 1010)2 → (010 100 011 010)2 → (2432)8
b.(4E1)16
(4E1)16 → (0100 1110 0001)2 → (010 011 100 001)2 → (2341)8
c.(BB.C)16
(BB.C)16 → (1011 1011 .1100)2 → (010 111 011 .110)2 → (273.6)8
d.(ABC.D)16
(ABC.D)16 → (1010 1011 1100 .1101)2 → (101 010 111 100 .110 100)2 → (5274.64)8
13.在底为b的位置化数字系统中,可用k个数码表示的最大整数数字是bk-1。分别找出以下系统中使用6个数码的最大数字:
a.二进制
26-1=63
b.十进制
106-1=999,999
c.十六进制
166-1=16,777,215
d.八进制
86-1=262,143
14.不进行转换,找出下面各个情况中在目标系统中所需的最少数码数量:
a.5个十进制数码转换为二进制
根据x≥k×(logb1/logb2),其中k=5,b1=10,b2=2,故x≥17
b.4个十进制数码转换为八进制
根据x≥k×(logb1/logb2),其中k=4,b1=10,b2=8,故x≥5
c.7个十进制数码转换为十六进制
根据x≥k×(logb1/logb2),其中k=7,b1=10,b2=16,故x≥6
15.不进行转换,找出下面各个情况中在目标系统中所需的最少数码数量:
a.5个二进制数码转换为十进制
根据x≥k×(logb1/logb2),其中k=5,b1=2,b2=10,故x≥2
b.3个八进制数码转换为十进制
根据x≥k×(logb1/logb2),其中k=3,b1=8,b2=10,故x≥3
c.3个十六进制数码转换为十进制
根据x≥k×(logb1/logb2),其中k=3,b1=16,b2=10,故x≥4
16.将下列十进制小数改写为带2的幂次的小数:
a.0.1875
0.1875 = 0.125 + 0.0625 = 1/8 + 1/16
b.0.640625
0.640625 = 1/2 + 1/8 + 1/64
c.0.40625
0.40625 = 1/4 + 1/8 + 1/32
d.0.375
0.375 = 1/4 + 1/8
17.使用前面的解题方法,把下列数转换为二进制数:
a.7.1875
7.1875 = (1111 .0011)2
b.12.640625
12.640625 = (0101 1111 .101001)2
c.11.40625
11.40625 = (0100 1111 .01101)2
d.0.375
0.375 = (0.011)2
23.写出与下列罗马数字等值的十进制数:
a.XV = 10 + 5 = 15
b.XXVII = 10 + 10 + 5 + 1 + 1 = 27
c.VLIII = 50 - 5 +1 + 1 + 1 = 48
d.MCLVII = 1000 + 100 + 50 + 5 + 1 + 1 = 1157
24.把下列十进制数转换成罗马数字:
a.17 = XVII
b.38 = XXXVIII
c.82 = LXXXII
d.999 = CMXCIX