解说float取值范围计算过程
1、先给出实型变量取值范围
实型变量可以分为单精度(float)(4字节)、双精度(double)(8字节)、长双精度(long double)(8字节)三种类型。
在 VC6.0 double和long double型具有完全相同的长度和存储格式,它们是等同的,但其它编译器可能不同。
下面给出实型变量取值范围:
2、实型变量在C语言内存中的存放形式
首先在讨论这个问题之前,先给出实型变量在C语言内存中的存放形式:
在存储实型数据时,无论表示是小数还是指数,均以指数格式存储,即实数的存储由符号位、指数、以及尾数等三部分组成。
下面我就将标准值是怎么定义的,和你说一下:
这个比较复杂,建议你找一下IEEE754标准看一下。
其中,s 表示 sign,即符号。如果 s == 0,则浮点数 V 为正;如果 s == 1,则浮点数 V 为负。
M 表示有效数字,在 [1, 2) 之间。
而 E 则是指数位。
故float存储的数字可以写成:
(1)Sign(1位):用来表示浮点数是正数还是负数,0表示正数,1表示负数。
(2)Exponent(8位):指数部分。即上文提到数字c,但是这里不是直接存储c,为了同时表示正负指数以及他们的大小顺序,这里实际存储的是c+127。
(3)Mantissa(23位):尾数部分。也就是上文中提到的数字b。
举个例子:计算float 13.14在C语言内存中存储情况
(1)首先整数用二进制表示为1101
(2)0.14用二进制表示为:
0.14x2=0.28 整数部分 0
0.28x2=0.56 整数部分 0
0.56x2=1.12 整数部分 1
0.12x2=0.24 整数部分 0
0.24x2=0.48 整数部分 0
0.48x2=0.96 整数部分 0
0.96x2=1.92 整数部分 1
0.92x2=1.84 整数部分 1
0.84x2=1.68 整数部分 1
这怎么还不出来结果呢,无奈。。。。。。(由于涉及后面循环了,所以临时更改一个例子,机智)
emmmmm,对的,这个例子不算了,下面来看下一个例子:
举个例子:计算float 2.5在C语言内存中存储情况
(1)整数部分可以写成二进制:0010
(2)小数部分0.5可以写成二进制如下:0.1
0.5x2=1 整数部分 1
(3)故2.5用二进制表示为10.1,然后可以写成类似于科学计数法:1.01x2^1
(4)根据上面的结论可以得出指数部分为:c=1+127=128 二进制表示为:10000000
(5)尾数部分为01填入即可
最后得出float 2.5在C语言内存中存储的形式为:
0 10000000 01000000000000000000000
下面验证这个结果是否等于2.5?
https://www.h-schmidt.net/FloatConverter/IEEE754.html
3、下面开始讨论float取值范围
前面知float存储的数字可以写成 ;当b和c最大时候就是float的取值范围。
首先来看c,指数位数为11111111最大,因为这个数有特殊用途,所以要减去1得11111110
接下来看b,可知当b全为1时,11111111111111111111111
此时为最大取值范围。
故可以得出最后结果float取值范围为:
解说float取值范围计算过程相关推荐
- 【C语言】解说float取值范围计算过程
微信公众号: 1.先给出实型变量取值范围 实型变量可以分为单精度(float)(4字节).双精度(double)(8字节).长双精度(long double)(8字节)三种类型. 在 VC6.0 do ...
- 18、CSS基础——属性值的计算过程
属性值的计算过程 1. 页面渲染 浏览器的页面渲染方式: 一个元素一个元素依次渲染,顺序按照页面的树形目录结构进行 即页面按照这种树形目录结构自根发散对元素依次进行渲染,元素一定是上一个渲染完后才渲染 ...
- CSS基础(6)- 属性值的计算过程
本系列笔记是基于[渡一教育]袁进老师的html+css基础课程而记录,仅作为个人记录以及阅读使用. 文章目录 属性值的计算过程 参考资料 属性值的计算过程 一个元素一个元素依次渲染,顺序则是按照页面文 ...
- 兰彻斯特方程用计算机实现,兰彻斯特方程的参数取值与计算.pdf
总第 206期 舰 船 电子 工 程 VO1.31No.8 ShipElectronicEngineering 49 Z011年第 8期 兰彻斯特方程的参数取值与计算 乔林峰" 胡浩然 ' ...
- Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
属性取值和赋值过程 一切皆是对象,类型也是对象. 对象包含一个__class__属性指向其所属类型. 对象包含一个__dict__属性指向其所包含的成员(属性和方法). 取值过程(下面是伪代码) 1 ...
- 关于sinX与y的大小比较取值范围计算
关于sinX与y的大小比较取值范围计算 @(概率论) 在求分布函数的时候,常常有已知XX的分布函数求Y=g(X)Y=g(X)的分布函数类型.往往不小心就会计算出错误的范围,从而导致分布函数求错. 比如 ...
- js Date 类型 的取值、计算、格式化 与 moment.js
js Date 类型 的取值.计算.格式化 与 moment.js 前言 笔者工作多年,作为一个爱思考的程序员,一直在想一个问题:究竟怎样才可以让自己变的更强.. 对不起各位,说的太中二了,让我们重新 ...
- 【详细解说】单精度浮点数float取值范围
结论 先说结论, float能表示范围为:± 3.4e38 最大正数PosMax 3.402e38 最小正数PosMin 1.175e-38 最大负数NegMax -1.175-38 最小负数N ...
- c 语言char取值范围,signed char类型取值范围计算
在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下: signed char c: 这个字符变量c的取值范围是[-128,127],是计算出来的呢? 假设字符 ...
最新文章
- 双绞线是计算机网络的一种通信线路吗,计算机网络环境的信道传输技术分析
- 作为一个新人,怎样学习嵌入式Linux?
- smoteenn算法_类别不平衡问题之SMOTE算法(Python imblearn极简实现)
- 确定浏览器是否支持某些DOM模块
- 组件通信 $ref
- element-ui table表格内容相同自动合并
- 【CodeForces - 1027B 】Numbers on the Chessboard (没有营养的找规律题,无聊题)
- yum报[Errno 256] No more mirrors to try
- liunx 下mysql 的安装(转载)
- 17. Store newed objects in smart pointers in standalone statements
- 数据库服务器系统崩溃,mssql数据库系统崩溃后的一般处理步骤与方法
- 蓝桥杯官网题库【简单题解析】持续更新
- win10千万不要重置_小白不要再用“一键重装系统”了,后果很严重!
- We Will Rock You
- 基于SBO的委外加工条码解决方案
- 【新手入门】自己动手搭建云服务器
- 离散数学:判断任意一个关系是否为函数,若是函数,判定其是否为单射、满射或双射
- dango One2Many example
- LQ0139 油漆面积【枚举】
- Selenium——文件另存为
热门文章
- mapreduce 编程模型
- linux mate主题目录,Linux Mint 19.1新功能介绍,包含Cinnamon、Xfce、MATE桌面
- nacos实现Java和.NetCore的服务注册和调用
- 全面屏手机的适配方案
- Windows10安装tomcat【配置环境变量】
- python读html导出excel,python数据导出到excel
- auditd日志分析方法
- Jquery LigerUI-表格的使用
- 项目如期完成是有多难?
- (九)图片动漫风格变换、图片卡通风格变换、批量处理、图片转动漫风格、图片转卡通风格、视频转动漫风格、视频转卡通风格