把 $64$ 位非零浮点数强制转换成 $32$ 位浮点数后,不可能( )。
这题核心就盯着IEEE 754浮点数的二进制结构看。64位转32位,本质是精度丢失导致的舍入,但别忘了最左边那个符号位——它只管正负,跟数值大小完全没关系。只要抓住'符号位独立且不变'这一条,D选项直接就能排除。
很多考生容易纠结'会不会等于原数',觉得64位转32位精度变差了,肯定不等于。其实像0、1、2这些特殊值,在32位里照样能精确表示,等于原数是完全可能的。真正不会发生的是符号变反,因为强制类型转换只截断尾数或调整指数,绝不会去翻转最左边的符号位。
本题考查的是IEEE 754浮点数的二进制表示规则,以及不同精度浮点数类型之间的转换特性。
IEEE 754标准规定,浮点数在内存中由三部分组成:1位符号位(S)、若干位指数位(E)和若干位尾数位(M)。对于32位单精度浮点数,结构是1+8+23;对于64位双精度浮点数,结构是1+11+52。关键点在于:符号位独立存在,它只决定整个数是正还是负,与后面的指数和尾数没有任何运算关系。