问题:十进制数4.5的单精度表示和双精度表示:

备注:   最高位符号位   0表示整数  1表示负数

阶码:  表示的是2的多少次幂这个幂指数

尾数:将其表示成科学计数法之后的舍去科学计数法表示的最高位为1的码数

大致步骤是酱紫滴:

  1. 把4.5写成二进制:整数部分4=100,小数0.5*2=1.所以4.5(10进制)=100.1(2进制);
  2. 写成指数形式:100.1=1.001*2^2;
  3. 对于单精度来说有4个字节32位,我们通常用第32位(最高位)表示符号;用接下来的八位表示指数;用剩下的23位表示尾数;
  4. 对于上面那个数来说,符号为正,符号位为0;指数为2,这里使用移位存储的方式,要把指数变成2+127=129,二进制是1000 0001(红色部分);尾数位为1.001,因为表示成指数后第一位都是1,就给省了,只记录.001即可;
  5. 综上 4.5的单精度表示为 0100 0000 1001 0000 0000 0000 0000 0000;
  6. 写成16进制:40 90 00 00;存储时反向存储即可得到结果。(小端存储模式)
  7. 对于双精度来说有8个字节64位,一般用最高位表示符号位;用接下来的11位表示指数;用剩下的52位表示尾数;
  8. 指数本来是2,在做移位存储时要加上2^10-1=1023,即2+1023=1025,指数位存储的是1025的二进制编码1000 0000 001(红色部分);
  9. 4.5的双精度表示为0100 0000 0001 0010 0000 0000 0000 ……
  10. 写成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等类型在内存中的存储相关推荐

  1. 转载——C语言中float,double类型,在内存中的结构(存储方式)

    最近在做一个数据格式分析和转换的项目,第一次接触底层的二进制代码存储,看的一头雾水,看到这个帖子后对于在Windows系统下数据的存储方式有了更多的了解,将原文分享一下: 原文地址为http://ww ...

  2. c语言指数部分尾数部分,C语言中 float double在内存中的存储

    C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit, double数据占用 64bit,我们在声明一个变量float f= 2.2 ...

  3. c语言中float是什么类型的数据,float是什么数据类型?

    float是浮点型数据类型. float是C语言的基本数据类型中的一种,表示单精度浮点数.C语言规定单精度浮点型在内存占用4个字节,精度为7位,取值范围为:3.4*10^-38 ~3.4*10^38或 ...

  4. C语言中float,double类型,在内存中的结构(存储方式).

    从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度. 任何数据在内存中都是以二进制(0或1)顺序 ...

  5. c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...

    16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...

  6. c语言double数据存储形式,C语言 float、double数据在内存中的存储方式

    float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...

  7. c语言中,char型数据是以什么形式存储的?

    C语言 字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点.严格来说,char 其实也是整数类型(integer type),因为char 类型储存的实际上 ...

  8. 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 ...

  9. c语言float怎么表示,c语言中float是如何表示的

    <c语言中float是如何表示的>由会员分享,可在线阅读,更多相关<c语言中float是如何表示的(6页珍藏版)>请在技术文库上搜索. 1.c语言中 FLOAT 是如何表示的 ...

最新文章

  1. Linux2.6内核--中断线被关闭的情况
  2. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书
  3. Java标签Label,如何不使用continue和break跳出循环
  4. VTK:深度优先搜索动画用法实战
  5. 未来ui设计的发展趋势_2025年的未来UI趋势?
  6. (转)关于SimpleDateFormat安全的时间格式化线程安全问题
  7. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  8. 事件类型-UI事件、焦点事件
  9. R语言周氏检验(Chow test) 检验回归中结构不稳定性的虚拟变量的替代方案
  10. java ajax 返回乱码,解决使用$.ajax的时候得到返回乱码
  11. python中unique函数_Pandas Series.unique()用法介绍
  12. static与final关键字
  13. 几种主流的分布式定时任务
  14. Python与Qt UI的图形界面编程(三)
  15. 教学打铃单片机实现(课程设计)
  16. html简单情侣对话
  17. pyspark系列--统计基础
  18. 【渝粤题库】国家开放大学2021春2026国际金融题目
  19. (二十):网络表情包的单模态与双模态情感分析
  20. vba移动文件_VBA学习笔记8:工作表操作

热门文章

  1. 对话阿里巴巴贾扬清:如何成为一名优秀的 AI 架构师?
  2. 【枭·音频】注入灵魂—《暗影火炬城》角色语音后期处理
  3. Unity iOS 使用 ASTC 格式纹理实践
  4. PHP学习笔记:php二手交易市场系统
  5. 第九届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
  6. 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
  7. 【蓝桥杯Java_C组·从零开始卷】第二节、ifswitch(超级详细,适合入门强化学习,理论与实战双保险(2021年12月30日上午9点直播·视频发布B站)
  8. 我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)
  9. 在LINUX上配置oracle ASMLib的多路径磁盘
  10. 纪念第一次青海湖之行泡汤