浮点型的有效位和存储方式
C++中有单精度浮点型float和双精度浮点型double,那么它们的有效位和存储方式分别是什么样的呢?
float的有效数字是7位,这个7意思是整数位加小数位共七位;
double的有效数字是16位,这个16意思是整数位加小数位共十六位。
C和C++中浮点型存储方式遵循IEEE 754标准(IEEE Standard for Floating-Point Arithmetic)。
一个浮点数由三部分组成:符号位S、指数位E、和尾数位M。
float:
S:符号位是1,表示负数;符号位是0,表示正数。
E:指数位本应该可以表示正负指数的,但没有符号位,因此,指数位部分通过加上偏差值127来表示正负。例如:实际指数是-8,则该指数位是119;实际指数是8,则该指数位是135。指数位范围是0~255,而实际指数位范围是-127~128。
M:尾数位,由于M总是大于1小于2的,也就是M写成1.xxxxxxx的形式,其中xxxxxxx表示小数部分。所以计算机在保存时总是默认把1去掉。例如1.55只保存50。由于2^(23+1)=16777216,而10^7<16777216<10^8,所以单精度浮点型的有效位数是七位。
我们知道了存储方式,那么看到一个二进制浮点数怎么转换为整形呢?
举个栗子:二进制为 1 10000011 0110101 00000000 00000000
符号位为1:负数
指数位 : 10000011 而(10000011)2=131 131-127 = 4 (实际指数)
有效位 : 0110101 而 1.0110101*2^4=22.625
计算过程:
(二进制)10110.101
整数转换为十进制 1*16+1*4+1*2=22
小数转换为十进制1*0.5+1*0.125=0.625
所以,最终结果为-22.625
最后是计算的公式:十进制数=(-1)^符号位 * (1+尾数位) * 2^(指数位-127).
Double
S--------E-------M
d1位-----11位----52位
double类型和float的储存方式类似,就不多赘述了。
浮点型的有效位和存储方式相关推荐
- 【C语言】浮点型数据在内存中的存储方式
目录 一. 前言 二. 问题的引出 三. 两类浮点型数据(float.double)在内存中的存储方式 3.1 两类浮点型数据的存储模型 3.1.1 浮点型数据数值读取的通用模型 3.1.2 floa ...
- 浮点型数据存储方式浅析
学习目标: ① 搞懂float和double型数据的存储方式 ② 实现浮点型二进制和十进制的相互转换 ③ 了解float和double类型的取值范围及其精度的由来 浮点型作为Java基础数 ...
- C语言int类型和float浮点型数据在内存中的存储方式
int 类型在内存中占4个字节,而一个字节是8个比特位,所以int类型占32个比特位. float类型在内存中同样也占4个字节,所以其也是占32个比特位. 一个比特位就是一个0或1,所以其在二进制位数 ...
- 十进制浮点型数据转换成二进制,并在内存中的存储方式
文章源地址:http://blog.csdn.net/wzy198852/article/details/9617239 原文章有些地方有误,已更正 十进制小数的二进制表示: 整数部分:除以2,取 ...
- float double 的存储方式
float 和 double 的表示法: 都是二进制的科学表示法: ± mantissa × 2 exponent (mantissa:尾数,exponent:指数,均使用二进制表示) float(浮 ...
- 金融系统中正确的金额计算及存储方式
转载自 金融系统中正确的金额计算及存储方式 经典的精度丢失问题 Java中的类型float.double用来做计算会有精度丢失问题,下面来看下面的示例. public static void main ...
- IOS的四种数据存储方式及优劣
IOS有四种经常使用数据存储方式: 第一种方法:用NSUserDefaults存储配置信息 NSUserDefaults被设计用来存储设备和应用的配置信息.它通过一个工厂方法返回默认的.也是最经常使用 ...
- C/C++浮点数在内存中的存储方式《转》
那天有人在汇编群里有人问了一个 #include <iostream> #include <stdio.h> using namespace std; int main() { ...
- C语言的数据类型大全,整型数据在内存中的存储方式
一.数据类型 通过长时间的学习C语言以及代码的编写,我掌握了很多很多的数据类型,下面就给大家罗列一下. 1.内置数据类型 char //字符数据类型-- ...
最新文章
- php实现调查结果百分比显示,Php文本游戏试图根据百分比做出结果
- 源码里throw new RuntimeException(“Stub!“)什么意思
- 闪回之 Flashback Data Archive
- Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
- 分块矩阵在秩不等式中的应用
- python语法详解_解析 Python3 基础语法
- The Nth Item
- uos系统终端调试linux命令,uos怎么开启开发者模式
- OpenCV读取多幅图片,读取系列图片,读取文件夹中指定图像类型的系列图片
- 发送HTTP请求的新姿势
- 精通开关电源设计(二)
- Visual Studio 2008系列教程(一):VS 2008安装详解!
- MicroKMS 下载 与使用
- 被90%中国人误解了12年的斜杠
- 三菱plc控制步进电机实例_【干货】plc控制步进电机逻辑思路,思路通了步步顺畅...
- 秦曾昌人工智能课程---1、机器学习中的数学基础
- 北风设计模式课程---里氏代换原则
- vivo手机互传的文件怎么找到_小白换机最头疼文件转移!学会vivo互传这几个技巧,换机更轻松...
- CyberWorld赛博世界是否能成为元宇宙核心力量
- ORACLE中CLOB介绍及使用