1.9 习题
(+)表明更深层次的问题,(*)表明在原书配套网站上有相应的解答。
1-1 本习题与本章例1-1无线气象站中的风速测量有关。风速测量机构的构成是这样的:一个风速仪的转动轴上附有一个一半透明一半黑色的圆盘,在圆盘的上面有一盏灯,圆盘的下面有一个光电二极管,当接收到光时,光电二极管可以产生3 V的电压信号,没有接收到光时则不产生。(a)请画出以下情况传感器所产生的电压波形图:(1)当风速不大时;(2)当风速为10 m/h时;(3)当风速为100 m/h时。(b)请口头解释微计算机需要输入并处理的信息是什么形式的,要怎样才能将表示风速的波形转换成二进制数字。
1-2 请在例1-1的图中分别找出以下华氏温度:-34、+31、+77和+108的离散的量化值以及二进制编码。
*1-3 请写出16~31的二进制、八进制以及十六进制数的形式。
1-4 以下大小的内存中可以分别存储多少二进制位?
(a)128 K位 (b)32 M位 (c)8 G位
1-5 1Tb有多少二进制位?[提示:根据所用工具的不同,可能需要一些技巧才能准确地算出结果。由于220=1 000 00010+d,其中d是220与1 000 00010的差,所以1 T=(1 000 00010+d)2,将这个等式展开成乘积和的形式,代入d的值,计算出3个乘积,再求和即可得出答案。]
1-6 以下位长的二进制数所能表示的最大整数所对应的十进制值是多少?
(a)11位 (b)25位
*1-7 将以下二进制数值转换为十进制:1001101、1010011.101、10101110.1001。
1-8 将以下十进制数值转换为二进制:187、891、2014和20486。
*1-9 将以下表中的数值装换为另外3种进制。
*1-10 采用本章例1-4与例1-7的方法将以下十进制数值装换为所要求的进制。
(a)7562.45→八进制 (b)1938.257→十六进制 (c)175.175→二进制
*1-11 采用二进制而不是十进制作为中间进制完成以下的数值进制转换:
(a)(673.6)8→十六进制 (b)(E7C.B)16→八进制 (c)(310.2)4→八进制
1-12 完成以下二进制数的乘法计算:
(a)1010×1100 (b)0110×1001 (c)1111001×011101
+1-13 除法计算可由减法与乘法构成,请尝试完成如下二进制除法计算,求出商和余数:1010110÷101。
1-14 有些系统采用十二进制,总共有4个整数数位,数位的权从高到低分别是:123,122,12,1,其中权为12的别名为1打(dozen),权为122的别名为1格罗斯(gross),权为123的别名为1大格罗斯((great gross)。
(a)6大格罗斯+8格罗斯+7打+4听饮料的数量是多少?
(b)756910听饮料的十二进制数是多少?
1-15 很多证据表明历史上有一些民族曾使用过二十进制系统。
(a)仿照十六进制系统中基数的构成方法,扩充并形成二十进制的基数。
(b)将(2014)10转换为二十进制。
(c)将(BCI.G)20转换为十进制。
*1-16 根据以下等式,求出基r的值:
(a) (BEE)r=(2699)10 (b) (365)r=(194)10
1-17 一种特殊喂养的聪明小鸡可进行以下计算。如果这种小鸡所使用的计数进制的基r是和它所有的脚趾数目一样,请问这种小鸡的每只脚有几个脚趾?
((34)r+(24)r)×(21)r=(1460)r(原书为1480,原书有误—译者注)
*1-18 请用二进制表示以下BCD码。
(a)0100 1000 0110 0111 (b)0011 0111 1000.0111 0101
*1-19 请用BCD码表示十进制数715与354。
*1-20 在计算机中,除了少数的情况外,几乎所有的数字计算都是采用二进制形式。但计算机的输入信息常常采用ASCII码,用ASCII码表示的数字字符可看作是在一个BCD码前附加011构成的。这样,能直接将输入的BCD码转换成二进制数的算法就非常重要,下面是一种转换算法:
1.在BCD码的4位十进制位段间画上短线,格式如:XXXX-XXXX。
2.将BCD码向右移一位,移出的这一位作为目的二进制值的一位。
3.如果BCD码中某个十进制位段的值大于0111,就将此码段的值减去0011。
4.重复第2步与第3步,直到BCD码中的最高位从最低十进制位段的最低位移出。
5.将每次移除的0或1按出现顺序从右至左排列即为目的二进制数值。
(BCD码本质是一个十进制数,将一个十进制数转换为二进制数的基本方法就是短除法,而将BCD码往右移一位就相当于除2,不过每次移位后考虑到BCD的有效性,还须要做恰当的调整—译者注)
(a)请用以上算法转换如下BCD码:0111 1000。
(b)请用以上算法转换如下BCD码:0011 1001 0111。
1-21 在计算机中,除了少数情况外,几乎所有的计算都是基于二进制数的。但是,计算机的输出信息常常采用ASCII码,用ASCII码表示的数字字符可看作是在一个BCD码前附加011构成的。这样,能直接将二进制数值转换为输出的BCD码的算法就非常重要,下面是一种转换算法:
1.估计目的BCD码的十进制位数,并在其十进制位段间画上短线,格式如:XXXX-XXXX-XXXX。
2.将二进制数与目的BCD码同时向左移一位,二进制数的左边最高一位移入目的BCD码的右边最低位。
3.如果BCD码中某个十进制位段的值大于0100,就将此码段的值加上0011。
4.重复第2步与第3步,直到二进制数中的最低位移入最低BCD码的最低位。
5.完成移动后,即可得目的BCD。
(a)请按上述算法获得如下二进制的BCD码:1111000。
(b)请按上述算法获得如下二进制的BCD码:01110010111。
1-22 要将英语字母的大小写进行相互转换,须将所对应的ASCII码的哪一位进行取反?
1-23 用8位ASCII码写出你的全名。
(a)左边最高位置0。
(b)左边最高位为偶校验位。
要求:名字之间须有空格,中间名缩写后须有一个句点。
(外国人姓名的构成一般为:first name“名”,middle initial“中间名缩写”,last name“姓”—译者注)
1-24 请翻译如下ASCII码:1000111 1101111 0100000 1000011 1100001 1110010 1100100 1101001 1101110 110001 1101100 1110011 0100001。
*1-25 请写出十进制数255的以下编码形式:
(a)二进制 (b)BCD (c)ASCII码 (d)带奇校验的ASCII码
1-26 对下面统一码UTF-8中的代码点进行编码,给出每一个编码的二进制和十六进制值:
(a)U+0040 (b)U+00A2 (c)U+20AC (d)U+1F6B2
1-27 (a)将十进制数32~47用6位二进制数表示,并在最右边加上一个奇校验位构成一个7位的二进制编码。
(b)用偶校验重复以上工作。
1-28 用1.7节的方法找出十六进制的格雷码。
1-29 本习题与例1-1中的无线气象站的测量有关。风的方向的测量信号由图1-6b所示的圆盘进行编码。
(a)假设编码000表示方向N,请选择并列出以下方向所对应的格雷码:S, E, W, NW, NE, SW, SE。
(b)请解释为什么你选的格雷码可以防止风向的误报?
+1-30 用n位的格雷码计数器(包含所有2n个编码)做顺序计数的能耗是用n位的二进制计数器做顺序计数的能耗的百分之多少?