从IEEE754标准谈C语言浮点数据类型

本文介绍了IEEE754标准在表示浮点数中的应用,详细阐述了浮点数在计算机中的存储格式,包括符号位、指数和尾数的含义。通过实例解析了单精度和双精度浮点数的表示,并探讨了浮点数类型的取值范围。此外,还讨论了C语言中将浮点数转换为整型时的陷阱,指出不正确的类型转化可能导致意外结果。
摘要由CSDN通过智能技术生成

先看下面几个问题,如果你能准确地回答,那么此篇文章将不适合你:

  • 计算机中怎样表示浮点数的,与整型的表示方法有什么不同?
  • 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  符号位为正,指数是2,尾数是1.0235045。

(-0.00023103)10 = -2.3103 × 10-4  符号位为负,指数是-4,尾数是2.3103。

同样在规格化二进制浮点数中:

(1001.0111010)2 = +1.001011101 × 23 符号位为正,指数是3,尾数是1.001011101。

(-0.0001010011)2 = -1.010011 × 2-4 符号位为负,指数是-4,尾数是1.010011。

由上面的实例可以知道,在二进制浮点数被规格化后,尾数的格式都是1.****,指数表示将小数点移动多少位可以实现规格化(向左指数加1,向右指数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值