1.1 为了将600份文件顺序编码,如果采用二进制代码,最少需要用几位?如果改用八进制或十六进制代码,则最少各需要用几位?
解: 若用二进制代码,由2 n ≥600可得,n至少为10,即最少需要用10位二进制代码;
若用八进制代码,则最少需要用4位;
若用十六进制代码,则最少需要用3位。
1.2 将下列二进制整数转换为等值的十进制数。
(1)(01101) 2 ;(2)(10100) 2 ;(3)(10010111) 2 ;(4)(1101101) 2 。
解: (1)(01101) 2 =0×2 4 +1×2 3 +1×2 2 +0×2 1 +1×2 0 =13
(2)(10100) 2 =1×2 4 +0×2 3 +1×2 2 +0×2 1 +0×2 0 =20
(3)(10010111) 2 =1×2 7 +0×2 6 +0×2 5 +1×2 4 +0×2 3 +1×2 2 +1×2 1 +1×2 0 =151
(4)(1101101) 2 =1×2 6 +1×2 5 +0×2 4 +1×2 3 +1×2 2 +0×2 1 +1×2 0 =109
1.3 将下列二进制小数转换为等值的十进制数。
(1)(0.1001) 2 ;(2)(0.0111) 2 ;(3)(0.101101) 2 ;(4)(0.001111) 2 。
解: (1)(0.1001) 2 =1×2 - 1 +0×2 - 2 +0×2 - 3 +1×2 - 4 =0.5625
(2)(0.0111) 2 =0×2 - 1 +1×2 - 2 +1×2 - 3 +1×2 - 4 =0.4375
(3)(0.101101) 2 =1×2 - 1 +0×2 - 2 +1×2 - 3 +1×2 - 4 +0×2 - 5 +1×2 - 6 =0.703125
(4)(0.001111) 2 =0×2 - 1 +0×2 - 2 +1×2 - 3 +1×2 - 4 +1×2 - 5 +1×2 - 6 =0.234375
1.4 将下列二进制数转换为等值的十进制数。
(1)(101.011) 2 ;(2)(110.101) 2 ;(3)(1111.1111) 2 ;(4)(1001.0101) 2 。
解: (1)(101.011) 2 =1×2 2 +0×2 1 +1×2 0 +0×2 - 1 +1×2 - 2 +1×2 - 3 =5.375
(2)(110.101) 2 =1×2 2 +1×2 1 +0×2 0 +1×2 - 1 +0×2 - 2 +1×2 - 3 =6.625
(3)(1111.1111) 2 =1×2 3 +1×2 2 +1×2 1 +1×2 0 +1×2 - 1 +1×2 - 2 +1×2 - 3 +1×2 - 4 =15.9375
(4)(1001.0101) 2 =1×2 3 +0×2 2 +0×2 1 +1×2 0 +0×2 - 1 +1×2 - 2 +0×2 - 3 +1×2 - 4 =9.3125
1.5 将下列二进制数转换为等值的八进制数和十六进制数。
(1)(1110.0111) 2 ;(2)(1001.1101) 2 ;(3)(0110.1001) 2 ;(4)(101100.110011) 2 。
解: (1)(1110.0111) 2 =(001 110.011 100) 2 =(16.34) 8 ;(1110.0111) 2 =(E.7) 16 。
(2)(1001.1101) 2 =(001 001.110 100) 2 =(11.64) 8 ;(1001.1101) 2 =(9.D) 16 。
(3)(0110.1001) 2 =(110.100 100) 2 =(6.44) 8 ;(0110.1001) 2 =(6.9) 16 。
(4)(101100.110011) 2 =(101 100.110 011) 2 =(54.63) 8 ;
(101100.110011) 2 =(0010 1100.1100 1100) 2 =(2C.CC) 16 。
1.6 将下列十六进制数转换为等值的二进制数。
(1)(8C) 16 ;(2)(3D.BE) 16 ;(3)(8F.FF) 16 ;(4)(10.00) 16 。
解: (1)(8C) 16 =(1000 1100) 2
(2)(3D.BE) 16 =(00111101.1011 1110) 2
(3)(8F.FF) 16 =(10001111.1111 1111) 2
(4)(10.00) 16 =(00010000.0000 0000) 2
1.7 将下列十进制数转换为等值的二进制数和十六进制数。
(1)(17) 10 ;(2)(127) 10 ;(3)(79) 10 ;(4)(255) 10 。
解: (1)将十进制(17) 10 转换为二进制数,过程如下:
则(17) 10 =(10001) 2 。
将二进制数转换为十六进制数:(10001) 2 =(00010001) 2 =(11) 16 。
(2)将十进制(127) 10 转换为二进制数,过程如下:
则(127) 10 =(1111111) 2 。
将二进制数转换为十六进制数:(1111111) 2 =(01111111) 2 =(7F) 16 。
(3)将十进制(79) 10 转换为二进制数,过程如下:
则(79) 10 =(1001111) 2 。
将二进制数转换为十六进制数:(1001111) 2 =(01001111) 2 =(4F) 16 。
(4)将十进制(255) 10 转换为二进制数,过程如下:
则(255) 10 =(11111111) 2 。
将二进制数转换为十六进制数:(11111111) 2 =(11111111) 2 =(FF) 16 。
1.8 将下列十进制数转换为等值的二进制数和十六进制数。要求二进制数保留小数点以后8位有效数字。
(1)(0.519) 10 ;(2)(0.251) 10 ;(3)(0.0376) 10 ;(4)(0.5128) 10 。
解: (1)将十进制(0.519) 10 转换为二进制数,过程如下:
则(0.519) 10 =(0.10000100) 2 。
将二进制数转换为十六进制数:(0.10000100) 2 =(0.10000100) 2 =(0.84) 16 。
(2)将十进制(0.251) 10 转换为二进制数,过程如下:
则(0.251) 10 =(0.01000000) 2 。
将二进制数转换为十六进制数:(0.01000000) 2 =(0.01000000) 2 =(0.40) 16 。
(3)将十进制(0.0376) 10 转换为二进制数,过程如下:
则(0.0376) 10 =(0.00001001) 2 。
将二进制数转换为十六进制数:(0.00001001) 2 =(0.00001001) 2 =(0.09) 16 。
(4)将十进制(0.5128) 10 转换为二进制数,过程如下:
则(0.5128) 10 =(0.10000011) 2 。
将二进制数转换为十六进制数:(0.10000011) 2 =(0.10000011) 2 =(0.83) 16 。
1.9 将下列十进制数转换为等值的二进制数和十六进制数。要求二进制数保留小数点以后4位有效数字。
(1)(25.7) 10 ;(2)(188.875) 10 ;(3)(107.39) 10 ;(4)(174.06) 10 。
解: (1)将十进制(25.7) 10 转换为二进制数(小数部分和整数部分分别转换),过程如下:
则(25.7) 10 =(11001.1011) 2 。
将二进制数转换为十六进制数:(11001.1011) 2 =(00011001.1011) 2 =(19.B) 16 。
(2)将十进制(188.875) 10 转换为二进制数(小数部分和整数部分分别转换),过程如下:
则(188.875) 10 =(10111100.1110) 2 。
将二进制数转换为十六进制数:(10111100.1110) 2 =(10111100.1110) 2 =(BC.E) 16 。
(3)将十进制(107.39) 10 转换为二进制数(小数部分和整数部分分别转换),过程如下:
则(107.39) 10 =(1101011.0110) 2 。
将二进制数转换为十六进制数:(1101011.0110) 2 =(01101011.0110) 2 =(6B.6) 16 。
(4)将十进制(174.06) 10 转换为二进制数(小数部分和整数部分分别转换),过程如下:
则(174.06) 10 =(10101110.0000) 2 。
将二进制数转换为十六进制数:(10101110.0000) 2 =(10101110.0000) 2 =(AE.0) 16 。
1.10 写出下列二进制数的原码、反码和补码。
(1)(+1011) 2 ;(2)(+00110) 2 ;(3)(-1101) 2 ;(4)(-00101) 2 。
解: 如表1-2-1所示。
表1-2-1
1.11 写出下列带符号位二进制数(最高位为符号位)的反码和补码。
(1)(011011) 2 ;(2)(001010) 2 ;(3)(111011) 2 ;(4)(101010) 2 。
解: 如表1-2-2所示。
表1-2-2
1.12 用8位的二进制补码表示下列十进制数。
(1)+17;(2)+28;(3)-13;(4)-47;(5)-89;(6)-121。
解: 正数的补码与其原码相同,负数的补码等于相应正数的原码取反加1。
(1)(17) 10 =(10001) 2
+17的原码为00010001,补码为00010001。
(2)(28) 10 =(11100) 2
+28的原码为00011100,补码为00011100。
(3)(13) 10 =(1101) 2
-13的原码为10001101,补码为11110011。
(4)(47) 10 =(101111) 2
-47的原码为10101111,补码为11010001。
(5)(89) 10 =(1011001) 2
-89的原码为11011001,补码为10100111。
(6)(121) 10 =(1111001) 2
-121的原码为11111001,补码为10000111。
1.13 计算下列用补码表示的二进制数的代数和。如果和为负数,请求出负数的绝对值。
(1)01001101+00100110;(2)00011101+01001100;(3)00110010+10000011;(4)00011110+10011100;(5)11011101+01001011;(6)10011101+01100110;(7)11100111+11011011;(8)11111001+10001000。
解: 如求出和为负数,则求此负数的补码,可得结果的原码,去掉符号位,即得该负数的绝对值。
(1)
和为正数。
(2)
和为正数。
(3)
和为负数,其绝对值为:1001011。
(4)
和为负数,其绝对值为:1000110。
(5)
和为正数。
(6)
和为正数。
(7)
和为负数,其绝对值为:0111110。
(8)
和为负数,其绝对值为:1111111。
1.14 用二进制补码运算计算下列各式。式中的4位二进制数是不带符号位的绝对值。如果和为负数,请求出负数的绝对值。(提示:所用补码的有效位数应足够表示代数和的最大绝对值。)
(1)1010+0011;(2)1101+1011;(3)1010-0011:(4)1101-1011;
(5)0011-1010;(6)1011-1101;(7)-0011-1010;(8)-1101-1011。
解: 将每个表达式,写成(A)+(B)的形式,然后用补码分别表示(A)和(B),最后将补码相加求和。如求出和为负数,则求此负数的补码,可得结果的原码,去掉符号位,即得该负数的绝对值。
若和的绝对值
,则需用n+1位表示每个加数的补码。
(1)1010+0011=(+1010)+(+0011)
和为正数。
(2)1101+1011=(+1101)+(+1011)
和为正数。
(3)1010-0011=(+1010)+(-0011)
和为正数。
(4)1101-1011=(+1101)+(-1011)
和为正数。
(5)0011-1010=(+0011)+(-1010)
和为负数,其绝对值为:0111。
(6)1011-1101=(+1011)+(-1101)
和为负数,其绝对值为:0010。
(7)-0011-1010=(-0011)+(-1010)
和为负数,其绝对值为:1101。
(8)-1101-1011=(-1101)+(-1011)
和为负数,其绝对值为:101000。
1.15 用二进制补码运算计算下列各式。(提示:所用补码的有效位数应足够表示代数和的最大绝对值。)
(1)3+15;(2)8+11;(3)12-7;(4)23-11;
(5)9-12;(6)20-25;(7)-12-5;(8)-16-14。
解: 将每个表达式,写成(A)+(B)的形式,然后用补码分别表示(A)和(B),最后将补码相加求和。
如求出和为负数,则求此负数的补码,可得结果的原码,去掉符号位,即得该负数的绝对值。
若和的绝对值
,则需用n+1位表示每个加数的补码。
(1)3+15=(+3)+(+15)
和为正数,代表十进制数18。
(2)8+11=(+8)+(+11)
和为正数,代表十进制数19。
(3)12-7=(+12)+(-7)
和为正数,代表十进制数5。
(4)23-11=(+23)+(-11)
和为正数,代表十进制数12。
(5)9-12=(+9)+(-12)
和为负数,代表十进制数-3。
(6)20-25=(+20)+(-25)
和为负数,代表十进制数-5。
(7)-12-5=(-12)+(-5)
和为负数,代表十进制数-17。
(8)-16-14=(-16)+(-14)
和为负数,代表十进制数-30。