来自:http://hi.baidu.com/jack54d1/blog/item/cd74cb15fb56ea4721a4e971<wbr>.html</wbr>
学计算机N年了,一年懒得去了解小数的存放,趁今天想知道double数据存放格式,了解了一下,真是懒不得,无论什么样的基础知道,早晚一天还是要学到心中的。
一、浮点型数据在内存中存储的表示
实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的尾数。比如32位机上float型为23位(因为规范化数的数码最高位恒为1,不必存储,实际精度为24位,下面会有详解),double型为52位。
单精度float型存储在内存中的大小为4个字节,即32位。
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
浮点表示法类似于科学计数法,任一数均可通过改变指数部分,使小数点位置发生移动,如23.45可以写成:2.345*10^1
浮点表示的一般形式为:R=M*2^e (R:Real M:Mantissa尾数 e:exponent阶码)
把上面float的二进制可分成三部分:
x<wbr><wbr><wbr><wbr><wbr><wbr><wbr> xxxxxxxx<wbr><wbr><wbr><wbr><wbr><wbr><wbr> xxxxxxxxxxxxxxxxxxxxxxx</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
数符(1b)<wbr><wbr> 阶码(8b)<wbr><wbr><wbr><wbr><wbr> 尾数(23b)</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
double型的浮点数分别是:数符(1b)、阶码(8b)、尾数(52b)
数符sign:real的正负号 "+":0 "-":1
阶码e:这里二进制其实是移码E(0~255)的表示,e=E-127(double型中e=E-1023) e为正值说明这个浮点数向左移动了e位,e为负值说明这个浮点数向右移动了e位。127=2^7-1 1023=2^10-1
尾数M:有效数字位,这里是有效数字位的部分二进制码,为什么说部分呢?仔细看通上下文就可以知道了。
例1:
float型浮点数125.5转化成32位二进制浮点数
125.5的二进制码为1111101.1,写成二进制的科学计数为:1.111101*2^6(因为科学计数法“整数”部分大于1,在二进制中,“整数”部分只能恒为1)即向左移6位,则e=6,则E=e+127=133,而E的二进制码为10000101,而1.111101把“整数”部分去除1之后为111101,之后补0,共23b,形成了尾码。
所以125.5的32位二进制浮点数为
0 10000101 11110100000000000000000
例2:
float型浮点数0.5转化成32位二进制浮点数
0.5的二进制码为0.1,写成二进制的科学计数为:1.0*2^(-1)即向右移1位,则e=-1,则E=e+127=126,而E的二进制码为01111110,而1.0把“整数”部分去除1之后为0,之后补0,形成了阶码。
所以0.5的32位二进制浮点数为
0 01111110 00000000000000000000000
double型浮点数类似。
二、 二进制转十字制
例3:
32位二进制浮点数为0 10000010 00010000000000000000000转化成十进制数浮点数
题中已给我们分了三部分,数符部分、阶码部分、尾数部分。
数符部分为0,则代表此数为整数;阶码部分为10000010,则E=130,则e=E-127=3,则说明其向左移了3位,0001加上“整数”部分的1之后,为1.0001。则原二进制数为1000.1=十进制8.5,或R=1.0001*2^3=8.5
其中很多计算类似。可举一反三!
分享到:
相关推荐
1017:浮点型数据类型存储空间大小 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 27763 通过数: 22417 【题目描述】 分别定义float,double类型的变量各一个,并依次输出它们的存储空间大小(单位:字节)。 ...
IEEE754 浮点型数据转换工具
浮点型如何在内存中进行存储呢?(csdn)————程序
S7-200SMART 双精度浮点型数据转换为单精度浮点型的方法
可将浮点型数据转换为字符型,如12.1;可转换为字符型12.1;稳定,逻辑直观
数据类型转换为浮点型数据,浮点型数据转换为整形数
浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和指数e。 ±mantissa × 2exponent (注意,公式中的mantissa 和 exponent使用二进制表示)
通过三种方法介绍了浮点型数据与IEEE754标准之间的互转
此代码基于正点原子的STM32F407VET6,可直接下载来用,含有SD\Flash+FatFs。可读取存储多个浮点型数据到SD/Flash,下载后直接运行即可。也可以直接修改成自己所需的,其他STM32类型板子也可以参考移植。
1.浮点型数据转16进制数。 2.支持大小端格式选择。 3.支持输入非法数据判断。
该程序不仅能阻止用户从键盘输入非浮点型数据,而且还能检测用户粘贴和拖放的数据是否合法!代码中有详细解释,相信稍微懂js的人都能看懂!
java 数据类型ppt 整型 浮点型 字符型 布尔型
C的浮点型数据研究,对于这份报告,不需要说太多,懂的人就懂了
S7-200SMART中如何把1个INT整型数据转换成REAL浮点型数据?
C#.net中TextBox输入浮点型数字
104规约中浮点型 数据与整形转换!很好用的
简单的c++程序,输出所输入的整型和浮点型数的二进制形式
学习C语言的数据类型浮点型数据.pdf
十六进制数据0x3f8000转换成浮点型数据为1.0,代码编程调试工具必不可少