c语言浮点数绝对值,单精度浮点数

  c语言浮点数绝对值,单精度浮点数

  c标准库3354浮点数-chenwu 128-博客花园

  c标准库3354浮点数

  浮点数格式

  当我学习C时,我知道浮点数的表达方式类似于科学计数。具体的浮点数模型是:

  尾数、基数、指数和符号表示。

  比百度深一点,在标准化的表格里(没错,还有非标准化的表格),可以在一个表格里列出float和double的表示格式:

  类型

  存储位数

  不正常的

  位

  指数位

  最后一位数字(m)

  总位数

  十六进制的

  十进制

  单精度浮点

  1位

  8位

  23位

  32位

  0x7FH

  127

  双精度

  1位

  1位

  52位

  64位

  0x3FFH

  1023

  但是有些细节不得不说:

  基数————这个基数可以由用户自定义。一般是2,但也有可能取10,16。如何指定?

  宏FLT基数在头文件float.h中定义,其值是所选的基数。

  尾数————这是一个定点十进制数,存储在原码中。尾数的最左端意味着1,这意味着所有23位都用于

  表示十进制数,而实际表示的数字是24位精度。

  Index ————这当然是一个整数,但是是通过代码移位来存储的。为了处理负指数的情况,应该加上实际的指数值

  偏移值被用作保存的值(float是127;双1023)。对于单精度浮点,有效

  索引范围为-126~127(保存的值为1~254,因为两个端点值被用作特殊值)。

  IEEE 754定义了什么?

  说到浮点数,这个标准是不能忽略的。那么这个标准的主要条款是什么呢?

  一、浮点数格式:

  除了上面提到的两种基本浮点格式,还定义了这两种格式的扩展。

  但是该标准只规定了扩展格式的最小精度和大小。例如,IEEE双精度扩展格式必须至少有

  有64个有效数字,它们总共至少占据79个数字。

  b、四种浮点数舍入方法:

  舍入到最接近的值:将结果舍入到最接近的可表示值(默认)。以这种方式,采用舍入到偶数,

  不像大家熟悉的‘四舍五入’。这主要是处理中位数(两个相邻整数的平均值)。如果这些值都遵循“五进制”,

  那么在数值计算中就会积累很大的误差。也就是说,——— 0.5要四舍五入到0,1.5要输入2 ———保证50%的概率。

  向方向舍入:向正无穷大方向(向上)舍入结果。

  向-方向舍入:向负无穷大方向(向下)舍入结果。

  舍入到0:将结果舍入到0。忽略小数部分。

  这些舍入方法可以由宏FLT-float . h中的舍入来指定

  C.五个浮点异常:

  无效操作:默认情况下返回NaN(如对负数求平方)

  除以零:默认情况下返回负无穷大或正无穷大。

  溢出:默认情况下,它返回正负无穷大(当结果数据太大而无法表示时)。

  下溢:默认返回非标准数(当结果数据太小而无法表示时)。

  不准确:默认情况下返回正确的舍入值。

  如果发生异常,会影响异常向量表,有的甚至会造成中断。至于中断,异常处理当然不是本文要讨论的内容。

  D.特殊值:(还记得指数部分没有用到的两个端点吗?)

  nan(非数字):对于单精度浮点数,NaN表示为指数为128(保存值=255)且尾数不等于零的浮点数。

  :这个数的定义和NaN一样,但它的尾数必须是0。(用于范围较大的数字)

  0:对于单精度,0表示指数字段为-127(保存值=0),尾数字段全为0。

  非规格化数:该数的定义与有符号0的定义相同,但尾数不能为0。(用于超出范围的数字)

  当然,这个标准规范里的东西还不止这些,对运算精度,不同类型数据之间的转换,不同二进制数据之间的转换等等也有一些要求。

  其实我们这里说的是最老的浮点标准,应该还有几个新标准。最好的信息当然是这些标准的文档。有时间的话,仔细看看也不错。

  文件float.h

  一开始很多处理器在硬件上不支持浮点运算,因为这样会增加很多成本。不支持浮点运算会使微处理器

  设计的复杂性减半。由于科学计算等一些高精度运算的需要,需要浮点运算。

  当然,文件float.h的结构也要遵循这个标准,但是这个头文件里并没有太多。除了前面提到的两个宏之外,

  这个头文件还定义了一些关于浮点数范围的宏。

  其实知道这个库也没什么特别的原因。毕竟,即使是数值计算算法,你也可以用MATLAB这个强硬的工具。

  不过知道了这个头文件之后,就很容易看出limits.h有一个约定的整数范围。

  不过这仅限于了解这个库,如何实现是另一个问题。

  参考文章:定点数和浮点数的区别。(文章不错,虽然有一些小错误)

  分类:C/C

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: