C/C++浮点数在内存中的存储方式

news/2024/7/8 2:48:27 标签: c/c++

任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法。

       在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N)+尾数(M)。对于float型数据,其二进制有32位,其中符号位1位,阶码8位,尾数23位;对于double型数据,其二进制为64位,符号位1位,阶码11位,尾数52位。

                31        30-23       22-0

float       符号位     阶码        尾数

                63        62-52       51-0

double    符号位     阶码        尾数

符号位:0表示正,1表示负

阶码:这里阶码采用移码表示,对于float型数据其规定偏置量为127,阶码有正有负,对于8位二进制,则其表示范围为-128-127,double型规定为1023,其表示范围为-1024-1023。比如对于float型数据,若阶码的真实值为2,则加上127后为129,其阶码表示形式为10000010

尾数:有效数字位,即部分二进制位(小数点后面的二进制位),因为规定M的整数部分恒为1,所以这个1就不进行存储了。

下面举例说明:

float型数据125.5转换为标准浮点格式

125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*2^6,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000

则其二进制表示形式为

0 10000101 11110110000000000000000,则在内存中存放方式为:

00000000   低地址

00000000

11111011

01000010   高地址

转载于:https://www.cnblogs.com/xmnn1990/p/4749115.html


http://www.niftyadmin.cn/n/667900.html

相关文章

揭秘人临死时的感受 你还想要自杀吗

美 国著名心理学家雷蒙德.A.穆迪博士在研究过150个濒死体验者(经历过“临床死亡”后复 生的人)的案例之后,试图为人们揭开死亡真相。尽管濒死体验发生的情境,以及亲历该种体验的个人性格都有着巨大的差别,但需要肯定的是,在这些人…

百度地图遇到的问题

/*** 在地头上设置Marker标记*/public void setMarker(LatLng point){setLatitude.setText(point.latitude"");setLongitude.setText(point.longitude"");setName.setText("");//在此处理点击事件 //构建Marker图标 BitmapDescriptor bitmap …

java 重写(override)和重载(overload)区别

名称发生范围方法名形参类别返回值修饰符重载(overload)本类必须一样类型,个数或者顺序至少有一个不同无要求无要求重写(override)父子类必须一样相同子类重写的方法,返回的类型和父类返回的类型一致,或者是其子类子类方法不能缩小父类的访问范围

mysql通过函数分割字符串为数组中,Mysql通过存储过程分割字符串为数组

分割字符串为数组需要用到 三个mysql 的函数 :REVERSE(str) 返回颠倒字符顺序的字符串str。SUBSTRING_INDEX(str,delim,count)返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如…

凝思磐石安全操作系统官方版 下载

http://www.linx-info.com/download/ rocky4.2.40-x86_64-security-2014-07-04.iso转载于:https://www.cnblogs.com/dview112/p/3950958.html

有一种算法叫做“Union-Find”?

前言: 不少搞IT的朋友听到“算法”时总是觉得它太难,太高大上了。今天,跟大伙儿分享一个比较俗气,但是却非常高效实用的算法,如标题所示Union-Find,是研究关于动态连通性的问题。不保证我能清晰的表述并解释…

80后小伙 小小火柴卖出百万来!

如今,穿了“新衣服”摇身一变的艺术火柴早已远离火柴最初的功用,已不再是一种廉价的点火工具 80后的沈子凯说:“当打火机满天飞,人人都在用ZIPPO的时候,原来的个性和时尚就变成了平庸和无趣。当大家都在玩时&#…

(转)程序员不爱读书,但这很不明智

英文原文:http://www.codinghorror.com/blog/2008/04/programmers-dont-read-books----but-you-should.html作者:Jeff Atwood 原文地址:http://blog.csdn.net/happydeer/article/details/8997768 StackOverflow.com的主旋律之一,就…