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. java reactor框架_Java反应式框架Reactor中的Mono和Flux
  2. 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT
  3. Hadoop集群_Hadoop安装配置
  4. 图像去雾算法_HTN图像去雾开源代码
  5. 工会分销系统部署搭建维护定制工会分销高可用架构
  6. mtk 6577 root
  7. 【python】pycharts画关联图
  8. 电脑软件连接ABB机器人控制柜
  9. 一定要注意网站图片版权问题!
  10. 蓝鲸智云6.1软件单机部署安装教程
  11. Python第三方生态库归类介绍
  12. 等产量曲线中r_西方经济学(1)阶段性作业2
  13. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测...
  14. 2022P气瓶充装考试练习题及答案
  15. 【日常练习】递增数列 【迭代加深】
  16. Spring笔记——装配Bean
  17. 倾角传感器如何通过精度和分辨率进行选型
  18. 独立冗余磁盘阵列(RAID)
  19. 服务器防沉迷系统,明日之后防沉迷系统解读 两个小时也能领跑服务器
  20. vuex进行分包管理

热门文章

  1. 电脑无法开机如何抢救硬盘数据?不能帮到你算我输!
  2. android-自定义换肤(2)
  3. 电路设计中的磁珠作用及如何进行取值!!!!!
  4. centos有阵列机器安装软件方法
  5. Vue3: vue3 props接多个不同类型的参数,默认false
  6. CRM 项目 各个模块
  7. CRLF是什么东西?
  8. Docker使用:将镜像上传至阿里云
  9. 港科百创|望尘科技成功上市,成为港股体育游戏第一股
  10. 暴走漫画gif爬取及保存