关于IEEE754浮点计算的一些问题?

为何00 41 00 00这几个16进制字节,转10进制是0,求计算公式感谢

IEEE754 它有详细的规定,数符,阶符,阶码,尾数在第几个字节,多长是有规定的。
简单的转换办法,我习惯用 union, union的成员 共享内存,所以容易破解转换。
c 语言程序:
#include <stdio.h>
union uu{
float f;
unsigned char s[4];
} u;
int main () {
u.s[0]=0x00; u.s[1]=0x00;u.s[2]=0x41;u.s[3]=0x00; //小端码4字节序列
printf("%.30f\n",u.f); // float 型数据输出
return(0);
}

估计,这个数数值太小,float 精度有限,所以得0。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-15
指数部分(阶码)即使用所谓的偏正值形式表示,偏正值为实际的指数大小与一个固定值(32位的情况是127)的和。采用这种方式表示的目的是简化比较。因为,指数的值可能为正也可能为负,如果采用补码表示的话,全体符号位S和Exp自身的符号位将导致不能简单的进行大小比较。正因为如此,指数部分通常采用一个无符号的正数值存储。单精度的指数部分是−126~+127加上偏移值127 ,指数值的大小从1~254(0和255是特殊值)。浮点小数计算时,指数值减去偏正值将是实际的指数大小。

这里移码实际上偏正值,和二进制中的不一样的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网