C语言 float、double数据在内存中的存储方式
- float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit)
- 指数部分
- 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数),因为指数可正可负,所以IEEE规定,此处算出的次方必须减去127才是真正的指数,
所以float的指数范围是 -(-) 到+(-)。- 底数部分
- 任何一个数的科学记数法都可以表示为1.xxx*^n,小数部分就可以表示为xxx,整数部分永远是1,不影响精度,所以可以不用储存。23bit二进制可以表示的
最大值是2^=,一共7位,这意味着最多能有7位有效数字(不能表示比8388608大的数值),但绝对能保证的为6位,即float的精度为6~7位有效数字。- 以8.25为例:
- 8.25=1000.01
- .01的科学记数法是1.*^
- 符号位,正数为0,负数为1
- 指数=,即x-=,因此x=,所以指数位应该是130,对应的二进制数是10,,
- 底数=,不足补0,所以23bit对应的二进制数是00,,,,,,,
- 所以最终在内存中二进制数是 ,, ,,,,,,,
- 4个字节的值是
- 说明:本人主机的字节序是大端字节序,所以顺序相反
- double存储方式和float相同,区别在于64bit=符号位(1bit)+指数位(11bit)+底数位(52bit)
指数部分算出的次方必须减去1023才是真正的指数,
double的小数部分可以表示的最大值是2^=,,,,,,这意味着最多能有16位有效数字,但绝对能保证的为15位,即double的精度为15~16位有效数字。
C语言 float、double数据在内存中的存储方式的更多相关文章
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
- C/C++数据在内存中的存储方式
目录 1 内存地址 2 内存空间 在学习C/C++编程语言时,免不了和内存打交道,在计算机中,我们存储有电影,文档,音乐等数据,这些数据在内存中是以什么形式存储的呢?下面做一下简单介绍. 本文是学 ...
- C语言float型数据在内存中的储存方式
- C语言之数据在内存中的存储
C语言之数据在内存中的存储 在我们学习此之前,我们先来回忆一下C语言中都有哪些数据类型呢? 首先我们来看看C语言中的基本的内置类型: char //字符数据类型 short //短整型 int //整 ...
- C语言中float,double类型,在内存中的结构(存储方式)
C语言中float,double类型,在内存中的结构(存储方式)从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以doubl ...
- C语言中浮点数在内存中的存储方式
关于多字节数据类型在内存中的存储问题 //////////////////////////////////////////////////////////////// int ,short 各自是4. ...
- Float在内存中的存储方式及IEC61131处理
Float在内存中的存储方式及IEC61131处理 1,fp32(32bits float)类型数据在存储器中占用4Bytes存储,且遵循IEEE-754标准: 一个浮点数分三部分组成: 符号位s(1 ...
- <转载>浅谈C/C++的浮点数在内存中的存储方式
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中 ...
- QList介绍(QList比QVector更快,这是由它们在内存中的存储方式决定的。QStringList是在QList的基础上针对字符串提供额外的函数。at()操作比操作符[]更快,因为它不需要深度复制)非常实用
FROM:http://apps.hi.baidu.com/share/detail/33517814 今天做项目时,需要用到QList来存储一组点.为此,我对QList类的说明进行了如下翻译. QL ...
随机推荐
- Linux内核(14) - 二分法与printk
人生就是一个茶几,上面摆满了杯具.内核也是一个大茶几,不过它上面的杯具是一个个的bug.确定bug什么时候被引入是一个很关键的步骤,在这个定位bug的过程中,不论有意或无意,都会很自然地用到二分查找的 ...
- mysql - 语法复习与学习
//本月的第一天,最后一天 $start=date('Y-m-01', strtotime(date("Y-m-d"))); echo date('Y-m-d', strtotim ...
- intellij IDEA开发node.js
现在网上好像关于IDEA开发node.js的讲解不是太多,今天试了一下,竟然成功了.... 1.安装nodejs http://nodejs.org/download/ 自动根据系统下载自己的版本n ...
- ECSHOP后台权限分配原理分析
1.在权限管理->管理员列表,中添加一名管理员 2.在admin\includes\inc_menu.php $modules['02_cat_and_goods']['01_goods_lis ...
- PHP函数register_shutdown_function的使用示例
某些情况下,我们需要在程序执行结束时,做一些后续的处理工作,这个时候,php的register_shutdown_function函数就可以帮我们来实现这个功能. 函数简介 当PHP程序执行完成后,自 ...
- Perl的新特性开启
1.perl自从5.8开始,新特性需要开启才可以使用,默认只是5.8版本,而不管当前你使用的是那个版本. 2.开启新特性,当然最高可用版本是你实际安装的版本,假设你安装的是v5.26版 ; #或者这样 ...
- 安装perl的版本控制器perlbrew
perlbrew可以用源码方式安装perl的各种版本,可以容纳多个perl版本共存,并随意切换. 1.把perlbrew安装到home目录: curl -L https://install.perlb ...
- 【Android】21.2 2D图形图像处理(Canvas和Paint)
分类:C#.Android.VS2015: 创建日期:2016-03-19 一.Canvas对象简介 画布(Canvas对象)是与System.Drawing或iOS核心图形等传统框架非常类似的另一种 ...
- 腾讯云数据库团队:MySQL5.7 JSON实现简单介绍
作者介绍:吴双桥 腾讯云project师 阅读原文.很多其它技术干货.请訪问fromSource=gwzcw.57435.57435.57435">腾云阁. 本文主要介绍在MySQL ...
- cocos2d-x 父节点和子节点执行不同动作
Test6::Test6() { CCSprite* sp1 = CCSprite::create(s_pPathSister1); CCSprite* sp11 = CCSprite::create ...