(1)-35 (2) -128 (3)-127 (4)-1
答:(1)-35 原: 1011 0101 反:1100 1010 补码:1100 1011
(2) -128 在八位二进制下,-128不能用原码或反码表示,反码只能表示0到127,-0到-127; 补码:1000 0000
(3)-127 原: 1111 1111 反:1000 0000 补码:1000 0001
(4)-1 原: 1000 0001 反:1111 1110 补码:1111 1111
答:
若a7 =0,则X为正数,显然a0··· a6取任何值均可。
若a7 =1,则X为负数,[X]移=0. a6 a5 ··· a0 ∵ -0.5D = -0.100000B,则[-0.5D ]移=0.100000
∴ 若要X>-0.5,即等价于[X]移> [-0.5D ]移 即0. a6 a5··· a0>0.100000,因此必须是a5··· a0不全为0。
结论: 如果a7 =0, a6··· a0取任何值均可; 如果a7 =1 ,必须满足a6 =1 且a5··· a0不全为0。
(1)最大数的二进制表示 (2)最小数的二进制表示 (3)规格化数所能表示的数的范围。
答:
(1)0111 1111 1111 1111 1111 1111 1111 1111
(2)1111 1111 1110 0000 0000 0000 0000 0000
(3)1111111111 0111111111111111111111~0111111111 1000000000000000000000
答:
答:
(1)先写出x和y的变形补码再计算它们的和
[x]补= 0011011 [y]补=0000011
[x+y]补=[x]补+[y]补=0011011+0000011=0011110
∴ x+y= 11110B 无溢出。
(2)先写出x和y的变形补码再计算它们的和
[x]补= 0011011 [y]补=1101011
[x+y]补=[x]补+[y]补=0011011+1101011= 0000110
∴ x+y= 0110B 无溢出。
(3)先写出x和y的变形补码再计算它们的和
[x]补=1101010 [y]补=1111111
[x+y]补=[x]补+[y]补=1101010+1111111=1101001
∴ x+y= - 10111B,无溢出。
答:
(1)先写出x和y的变形补码,再计算它们的差
[x]补=0011011 [y]补=1100001 [-y]补=0011111
[x-y]补=[x]补+[-y]补=0011011+0011111=0111010
∵运算结果双符号不相等 ∴ 为正溢出
X-Y=+11010B
(2)先写出x和y的变形补码,再计算它们的差
[x]补=0010111 [y]补=0011011 [-y]补=1100101
[x-y]补=0010111+1100101=1111100
∴ x-y= -00100B 无溢出
(3)先写出x和y的变形补码,再计算它们的差
[x]补=0011011 [y]补=1101101 [-y]补=0010011
[x-y]补=[x]补+[-y]补=0011011+0010011=0101110
∵运算结果双符号不相等 ∴ 为正溢出
X-Y=+10111B
解:
12.用IEEE32位浮点格式表示如下的数:
(1)-5 (2)-1.5 (3)384 (4)1/16 (5)-1/32
答:对于所有的数,我们可以将它们表示为以下的形式:(-1)^S × (1.M )× 2^(E-127) 其中S是符号位,M是尾数部分23位,也称为小数部分或分数部分),E是指数部分。注意:我们不直接存储前面的“1.”,而是隐式地将它包含在内。这被称为隐藏的位——相当于节省一个位的存储。
答案:
(1)-5:11000000101000000000000000000000
(2)-1.5: 10111111110000000000000000000000
(3)384:01000011110000000000000000000000
(4)1/16:00111101100000000000000000000000
(5)-1/32 :10111101000000000000000000000000
示例:
-1/32 先转化成小数 -0.03125
- S = 1 (因为数字是负数)
- 把-0.03125写成二进制形式: -0.00001
- 转换为规范化的形式: 1.0×2−51.0×2−5
- E = -5 + 127 = 122 = 01111010 (二进制形式)
- M = 0 (后面用0填充)
结果:10111101000000000000000000000000
答案:
(1) 1 10000011 110 0000 0000 0000 00000000
由上题可知,S = 1 (意味着数是负的) E = 10000011 (二进制) = 131 (十进制) M = 110 0000 0000 0000 00000000 = 0.75
所以,该数值为: (−1)1×(1.75)×2(131−127)(−1)1×(1.75)×2(131−127) = -1.75 * 2^4 = -28
(2) 0 01111110 101 0000 0000 0000 00000000
S = 0 (意味着数是正的) E = 01111110 (二进制) = 126 (十进制) M = 101 0000 0000 0000 00000000 = 0.625
所以,该数值为: (−1)0×(1.625)×2(126−127)(−1)0×(1.625)×2(126−127) = 1.625 * 2^-1 = 0.8125
因此,给定的两个IEEE 32位浮点数对应的十进制数分别为-28和0.8125。