求解释此句 详细点更好 int* ip = reinterpret_cast<int*>(&f); 其中这部使得输出:*ip=1107951516
发布网友
发布时间:2022-05-06 03:03
我来回答
共2个回答
热心网友
时间:2023-10-10 19:12
计算机的浮点数存储依照IEEE754规范,它是这样规定的:
浮点数由两部分组成:底数部分M+指数部分E: M*2E (M和E都是2进制的
32位二进制是这样划分的:
FEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
其中F是符号位和(和整数一样)E是指数位 M是有效数字位(看起来是23位,实际上是24位,并且最高位始终为1)指数部分8位,由于指数可以为负数,所以IEEE754规则规定此处的值减去127为实际指数,并且原始小数点在看不见的最高位的1后面
34.5的二进制是这样存储的
01000010 00001010 00000000 00000000
1000010 0<--指数
10001010 00000000 00000000<--有效数字
指数部分为10000100=132,132-127=5,所以有效数字1.0001010 00000000 00000000的小数点向右移动5位就是100010.10 00000000 00000000,换算成10进制就是34.5
把01000010 00001010 00000000 00000000当作int输出就好计算多了,那就是1107951616
热心网友
时间:2023-10-10 19:12
现在还看不懂哈!