1.了解float存储结构

float存储结构请看另一篇文章http://blog.csdn.net/whzhaochao/article/details/12885875

2.float最大值

float结构如下图:
要想获得正最大值,那就令符号位为0,指数位和尾数位全为1,则应该是最大会是,最大值应该为:
1.11111111111111111111111*2^128=(2-2^-23)*2^128= 6.805646932770577*10^38
则float类型十六进制表示为:0x7fff ffff 
 以下是测试代码:
void main(int argc, char* argv[])
{float a=-8.25;char *p=(char*)&a;*p=0xff;*(p+1)=0xff;*(p+2)=0xff;*(p+3)=0x7f;printf("\n&a=%x",&a);printf("\na=%f",a);}

结果并不和我们想的一样,出现了1.#QNAN0,这个我也不知道为什么,知道原因的可以回复!

如果指数位最后一位为0,则是我们想要的结果,
我们知道float最大为(2-2^-23)*2^127= 3.4028234663852886*10^38
见float.h
#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */
当我们令指数位为:1111 1110 =254 则指数为254-127=127
尾数位全为1,则最大数为1.11111111111111111111111*2^127=(2-2^-23)*2^127=3.4028234663852886*10^38
则十六进制表示为:0x7f7f ffff

3.测试代码:

void main(int argc, char* argv[])
{float a=-8.25;char *p=(char*)&a;*p=0xff;*(p+1)=0xff;*(p+2)=0x7f;*(p+3)=0x7f;printf("\n&a=%x",&a);printf("\na=%f",a);}
我们从结果可以看出
&a=12ff44
a=340282346638528860000000000000000000000.000000
这是float的最大值

4.float正最小值

float.h中我们看到float正的最小值为  1.175494351e-38F
#define FLT_MIN         1.175494351e-38F        /* min positive value */

通过了解float类型的结构我们知道如何才能获得正的最小值,要获得正的最小值,我们只要将指数位置成最小及0000 0000 则指数为0-127=-127,然后将尾数位最后一位置1,其它置0

及十六进制为0x0000 00001

5.测试代码

void main(int argc, char* argv[])
{float a=-8.25;char *p=(char*)&a;*p=0x01;*(p+1)=0x00;*(p+2)=0x00;*(p+3)=0x00;printf("\n&a=%x",&a);printf("\na=%e",a);}

我们得到的结果为 1.00000000 00000000 0000 01*2^-127= 5.877472454760670*10^-039,可是结果不是我们预测的!不知道为什么

如果将指数位置成1,测试代码如下:
void main(int argc, char* argv[])
{float a=-8.25;float b=0;char *p=(char*)&a;*p=0x01;*(p+1)=0x00;*(p+2)=0x80;*(p+3)=0x00;printf("\n %d ",sizeof(a));printf("\n&a=%x",&a);printf("\na=%e",a);}
我们看到结果为 1.0000 0000 0000 0000 0000 001*2^-126= 1.1754944909521339e-038,这是我们想要的结果!

float类型最大值和最小值相关推荐

  1. 【c++】如何获取int类型最大值以及float类型最大值

    原文链接 看下面的代码就知道了: #include <iostream> #include <limits.h>//里面有int类型的最大值和最小值 #include < ...

  2. Golang 整数类型最大值和最小值的定义

    在写一道算法时需要用到int32类型的最大值和最小值,但是查了查在go的标准库中没有定义这些变量,所以当需要使用整数类型的最大值和最小值的时候,我们需要自己手动去定义. 无符号整型uint 其最小值是 ...

  3. Python学习笔记——如何获得数值类型的最大值和最小值(表示范围)

    1 获得float类型的最大值 可以使用下面的代码获得float类型的"inf表示", float('inf')

  4. 为什么 int 类型最大值为 2^31-1,最小值为 -2^31

    一个 int 占 4 字节(Byte),也就是 32 位(Bit),其中第一位用来存储正负号,1 表示负数,0 表示正数 也就是说,共有 31 位用来存储数据,所以,能够存储数字的总个数为 2^31= ...

  5. int 类型数据的最大值,最小值及其十六进制表示方式

    用以下两行代码可以知道自己的电脑下,int数据类型的最大值,最小值 cout << "int数据类型最大值:" << (numeric_limits< ...

  6. 整数的最大值和最小值

    本文翻译自:Maximum and Minimum values for ints I am looking for minimum and maximum values for integers i ...

  7. MySQL数据类型(最大值 和 最小值)

    MySQL数据类型(最大值 和 最小值) 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-3276 ...

  8. double类型最大值_Java后端精选基础教程:Java 中的基本数据类型「连载 6」

    数据类型定义了变量可以采用的值,例如,定义变量为 int 类型,则只能取整数值. 在 Java 中有两类数据类型: 1)原始数据类型 2)非原始数据类型 - 数组和字符串是非原始数据类型,将在以后的教 ...

  9. python输出最大值与最小值求成绩平均值_Python第3次作业

    习题1: 1.初始化一个数据集,包括5-10位同学的成绩数据(数据类型不限),数据格式如下: **学号 姓名 Java C语言 Python 2017XXXX 小白 87 68 92 2017XXXX ...

最新文章

  1. 深度学习教程 TensorFlow and Deep Learning Tutorials
  2. JVM调优:GC 参数
  3. 2020 区域赛(沈阳) M. United in Stormwind fwt + sosdp
  4. VisualStudio中的代码段
  5. powershell 中的pause
  6. java定义变量的输入_Terraform中输入变量
  7. 适合新手学习的laravel接入微信接口,实现微信公众号二次开发
  8. 西门子 SinuTrain 840Dsl OPC UA 模拟
  9. redis下载安装教程(详细步骤)
  10. AI根据代码内容自动起函数名,再也不怕命名不规范的同事了|开源
  11. 机器学习西瓜书-代价曲线
  12. brat标注工具知识总结
  13. 拾方易告诉你:什么叫POS机封顶
  14. 大数据就业前景及职能定位解析!
  15. android10加载图片问题解决思路全程记录 FileNotFoundException: /content:/media/external/images
  16. 程序员自学编程被腾讯拒却月入3w是一种怎样的体验?
  17. 小程序楼层索引,将汉字转换为拼音并以首字母排序
  18. 如何设置Python环境变量?
  19. 东京奥运会完美收官,来看看这届奥运会都有哪些人工智能黑科技
  20. 安装MongoDB出现service MongoDB failed to start,verify that you have sufficient privileges to start syste

热门文章

  1. 郑州信源招标采购系统 定制
  2. 【星座】心理学中关于星座等对号入座的叫什么效应啊
  3. SSM项目-模仿天猫网站
  4. 赛题发布|“星河杯”隐私计算大赛-赛题发布沙龙成功举办
  5. 那些岁月,那些点点星河。
  6. C语言——利用静态变量计算n的阶乘
  7. C语言解决读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
  8. js面向对象编程class
  9. 通过蛋白结构分析、同源建模、分子对接、虚拟筛选、构效关系分析、药效团靶点抑制剂筛选预测、全新药物设计,先导化合物发现等方法对靶点药物进行全方位设计及分析
  10. 【蓝桥杯】第九届蓝桥杯单片机国赛 代码程序