C语言中float double等类型在内存中的存储
问题:十进制数4.5的单精度表示和双精度表示:
备注: 最高位符号位 0表示整数 1表示负数
阶码: 表示的是2的多少次幂这个幂指数
尾数:将其表示成科学计数法之后的舍去科学计数法表示的最高位为1的码数
大致步骤是酱紫滴:
- 把4.5写成二进制:整数部分4=100,小数0.5*2=1.所以4.5(10进制)=100.1(2进制);
- 写成指数形式:100.1=1.001*2^2;
- 对于单精度来说有4个字节32位,我们通常用第32位(最高位)表示符号;用接下来的八位表示指数;用剩下的23位表示尾数;
- 对于上面那个数来说,符号为正,符号位为0;指数为2,这里使用移位存储的方式,要把指数变成2+127=129,二进制是1000 0001(红色部分);尾数位为1.001,因为表示成指数后第一位都是1,就给省了,只记录.001即可;
- 综上 4.5的单精度表示为 0100 0000 1001 0000 0000 0000 0000 0000;
- 写成16进制:40 90 00 00;存储时反向存储即可得到结果。(小端存储模式)
- 对于双精度来说有8个字节64位,一般用最高位表示符号位;用接下来的11位表示指数;用剩下的52位表示尾数;
- 指数本来是2,在做移位存储时要加上2^10-1=1023,即2+1023=1025,指数位存储的是1025的二进制编码1000 0000 001(红色部分);
- 4.5的双精度表示为0100 0000 0001 0010 0000 0000 0000 ……
- 写成16进制:40 12 00 00 00 00 00 00;存储的时候也要反过来存。
Ps: 移位存储可以参看链接,主要思想就是要避免+0和-0的同时出现,并且能增大表示范围。操作方法就是,如果我们想用n位来存储带符号的整数a,那么做移位存储的时候就要存储a+( 2^(n-1) - 1 ) 的相应的二进制码;如n=8, a=2时,我们要存2+(2^7-1)=129的二进制码.
移位存储:http://3y.uu456.com/bp_3fcoo8iccx7z7sg756cv_1.html
可以参考下面的博文:
浮点数的二进制表示学习笔记(有很多相应的例题): http://blog.163.com/yql_bl/blog/static/847851692008112013117685/
http://blog.csdn.net/zmq5411/article/details/6301250
转载于:https://www.cnblogs.com/bingdaocaihong/p/6993028.html
C语言中float double等类型在内存中的存储相关推荐
- 转载——C语言中float,double类型,在内存中的结构(存储方式)
最近在做一个数据格式分析和转换的项目,第一次接触底层的二进制代码存储,看的一头雾水,看到这个帖子后对于在Windows系统下数据的存储方式有了更多的了解,将原文分享一下: 原文地址为http://ww ...
- c语言指数部分尾数部分,C语言中 float double在内存中的存储
C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用 64bit,我们在声明一个变量float f= 2.2 ...
- c语言中float是什么类型的数据,float是什么数据类型?
float是浮点型数据类型. float是C语言的基本数据类型中的一种,表示单精度浮点数.C语言规定单精度浮点型在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38 ~3.4*10^38或 ...
- C语言中float,double类型,在内存中的结构(存储方式).
从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度. 任何数据在内存中都是以二进制(0或1)顺序 ...
- c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...
16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...
- c语言double数据存储形式,C语言 float、double数据在内存中的存储方式
float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...
- c语言中,char型数据是以什么形式存储的?
C语言 字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点.严格来说,char 其实也是整数类型(integer type),因为char 类型储存的实际上 ...
- c语言中不正确的浮点型常量,c语言中float a=1;对吗?,c语言的问题。float a=1,*b=a,*c=...
导航:网站首页 > c语言中float a=1:对吗?,c语言的问题.float a=1,*b=&a,*c= c语言中float a=1:对吗?-,c语言的问题.float a=1,*b ...
- c语言float怎么表示,c语言中float是如何表示的
<c语言中float是如何表示的>由会员分享,可在线阅读,更多相关<c语言中float是如何表示的(6页珍藏版)>请在技术文库上搜索. 1.c语言中 FLOAT 是如何表示的 ...
最新文章
- Linux2.6内核--中断线被关闭的情况
- python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书
- Java标签Label,如何不使用continue和break跳出循环
- VTK:深度优先搜索动画用法实战
- 未来ui设计的发展趋势_2025年的未来UI趋势?
- (转)关于SimpleDateFormat安全的时间格式化线程安全问题
- MSP, CMP傻傻分不清楚?一文读懂云管理的春天
- 事件类型-UI事件、焦点事件
- R语言周氏检验(Chow test) 检验回归中结构不稳定性的虚拟变量的替代方案
- java ajax 返回乱码,解决使用$.ajax的时候得到返回乱码
- python中unique函数_Pandas Series.unique()用法介绍
- static与final关键字
- 几种主流的分布式定时任务
- Python与Qt UI的图形界面编程(三)
- 教学打铃单片机实现(课程设计)
- html简单情侣对话
- pyspark系列--统计基础
- 【渝粤题库】国家开放大学2021春2026国际金融题目
- (二十):网络表情包的单模态与双模态情感分析
- vba移动文件_VBA学习笔记8:工作表操作
热门文章
- 对话阿里巴巴贾扬清:如何成为一名优秀的 AI 架构师?
- 【枭·音频】注入灵魂—《暗影火炬城》角色语音后期处理
- Unity iOS 使用 ASTC 格式纹理实践
- PHP学习笔记:php二手交易市场系统
- 第九届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
- 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
- 【蓝桥杯Java_C组·从零开始卷】第二节、ifswitch(超级详细,适合入门强化学习,理论与实战双保险(2021年12月30日上午9点直播·视频发布B站)
- 我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)
- 在LINUX上配置oracle ASMLib的多路径磁盘
- 纪念第一次青海湖之行泡汤