剖析整数,浮点数在内存中的存储
来源:互联网 发布:惠普企业软件 编辑:程序博客网 时间:2024/05/29 17:50
一:整数在内存中的存储
比如:
int a = 10;
int b = -10;
a分配了4个字节的空间,那如何存储呢?
首先,明确原码,反码,补码:
原码:直接将二进制按照正负数的形式翻译成二进制。
反码:将原码符号不变。其他位一次按位取反。
补码:反码加一得到补码。
正数的原反补相同,对于整形来说:数据存放内存中其实是存放的补码。
接下来,介绍在内存中存储:
a和b分别存储得是补码,但顺序有差异。
所以要介绍大小端:
大段字节序存储:是数据的低位保存在内存的高地址中,数据的高位保存在内存的低地址中。
小段字节序存储:是指数据的低位保存在内存的低地址,中数据的高位保存在内存的高地址中。
二:浮点型在内存中的存储:
浮点数包括: float
double
long double
根据国际标准,任意一个二进制浮点数V可以表示为下面的形式:
(-1)^S*M*2^E
.(-1)^S表示符号位,当S=0;V是正数,反之,V是负数。
.M表示有效数字,大于等于1,小于2.
2^E表示指数位
例:十进制的5.0,二进制表示为101.0,相当于1.01*2^2
所以S=0,M=1.01,E=2.
规定:对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位是有效数字M;
对于64位的浮点数,最高的1位是符号位s,接着的11位是指数E,剩下的52位是有效数字M。
注 :如果E是一个无符号整数,但是因为科学计数法中的E是可以出现负数,
所以存入内存中的E必须加上一个中间数,对于8位E,此数是127;对于11位E,此数为1023。
接下来E分情况:
1.E全是0,此时表示正负0;
2.E全是1.表示,表示无穷大。
举个例子:
int main()
{
float f = 5.5f;
return 0;
};
f用十进制表示为5.5,用二进制表示为101.1,也就是1.011*2^2 (E=2+127=129)
s = 0; E = 10000001 M=01100000000000000000000
表示为:01000000101100000000000000000000
- 剖析整数,浮点数在内存中的存储
- 剖析整数,浮点数在内存中的存储
- 剖析整数,浮点数在内存中的存储
- 剖析整数、浮点数在内存中的存储
- 剖析整数,浮点数在内存中的存储
- 剖析浮点数在内存中的存储
- 整数,浮点数在内存中的存储
- 整数,浮点数在内存中的存储
- 整数、浮点数在内存中的存储
- 剖析各类型和整数、浮点数在内存中的存储
- 浅谈整数,浮点数在内存中的存储
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储形式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 搭建Linux环境的Java开发(Eclipse + maven)
- AtCoder Grand Contest 018
- HDU 1465 不容易系列之一
- 练习:运算符(水仙花数,个人所得税)
- RANSAC的系统介绍(1)——翻译
- 剖析整数,浮点数在内存中的存储
- socket网络编程ftp
- Can not issue data manipulation statements with executeQuery()
- 浪里个浪 FZU
- HDU 1874 畅通工程续(Floyd)
- MSP430单片机与SIM800A调试
- OAM密码加密传输
- 学习HTML的日子-笔记分享
- POJ 3253