先看下面几个问题,如果你能准确地回答,那么此篇文章将不适合你:
计算机中怎样表示浮点数的,与整型的表示方法有什么不同?
32位精度的float类型和64位精度的double类型能表示浮点数最大范围是多少?
该C语言语句 printf("%d\n", 2.5); 输出结果是什么,为什么?
我先说在此之前我如果回答,答案如下:
计算机中有符号整型采用补码进行表示,浮点型怎么表示没想过。
float类型可以表示-232-1~232,double类型可以表示-264-1~264。
输出格式要求输出整型,而数是浮点型,类型转化之后输出结果为2。
有一点可以明确,我的回答都是错误的。那好吧,下面是我查看一些资料总结出来的,希望能解释清楚其中的”奥秘“。
IEEE754标准(以下简称”标准“)是使用最广泛的浮点数运算标准,为许多CPU与浮点运算器所采用。该标准定义了表示浮点数的格式,如下图所示:
下面只讨论二进制浮点数的表示,分成了三个部分:
符号位、指数、尾数,它们的含义可以类比科学计数法。如:
科学计数法中:
(102.35045)10 = +1.0235045 × 102 符号位为正&#x