数据在计算机中的存储(字节序,浮点数)
2014-09-28 20:45
288 查看
1.大小端模式(字节序)
大小端的概念:数在内存中分字节存储的先后顺序。大端模式即数的低位存在高地址,高位存在低地址当中。而小端模式相反,低位存在低地址,高位存在高地址。比如0x1234,这里的高低位是从左往右的。0x12是高位,0x34是低位。1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
3)常见大小端模式
一般操作系统都是小端,而通讯协议是大端的。
Big Endian : PowerPC、IBM、Sun
Little Endian : x86、DEC
ARM既可以工作在大端模式,也可以工作在小端模式。
如何判断大小端程序:
BOOL IsBigEndian() { int a = 0x1234; char b = *(char *)&a; //取a的地址,将其强制转换为char指针类型,取这个地址中的值,相当于去低地址的存的值
if( b == 0x12) { return TRUE; } return FALSE; }
BOOL IsBigEndian() { union NUM { int a; char b; }num; num.a = 0x1234; if( num.b == 0x12 ) { return TRUE; } return FALSE; }
第二种方法利用联合的性质,共享一段内存,以达到节省空间的目的,只存储最大长度的变量。当给a赋值的时候,a和b的起始地址是一样的,它们共享一段内存,取出b段的数字低地址若存的是高位,那么是大端模式。
大小端之间的转换
主要思想是取出每个字节,然后将字节移动左移或右移。
#define BigtoLittle16(A) (( ((uint16)(A) & 0xff00) >> 8)|(( (uint16)(A) & 0x00ff) << 8))
参考资料:/article/1361322.html
2.数据在内存中的存储
2.1.原码,反码,补码。把一个数转换为二进制在其前面添加符号位,0为正数,1为负数。称为原码。
正数的反码是自身,负数的反码是保持符号位不变,其余位取反。
补码正数还是不变,负数是补码+1。若是8位这补码的范围是[-128,127],其中-128为10000000,就不存在源码中-0情形。
更详细的解释:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
2.2.浮点数在计算机中的存储。
浮点数存在小数点,但是计算机无法表示小数点,解决的方法是采用指数(科学计算法)的方式来表示,使得整数部分固定为1,这样浮点数就可以分成三个部分来表示,第一个部分是符号位,第二部分是指数位,第三部分是小数位。
例:以32位的浮点数为例说明一下
求129.5在计算机中的存储
先将整数和小数部分分别表示为二进制10000001.1,用科学计算法表示,1.00000011*2^7,符号位0,指数部分为7加上偏移127为134,二进制为10000110,小数部分为10000000000000000000000(23位),结果为01000011010000000000000000000000
sign:1位,正数为0,负数为1.
exponet:8位,要加上127(为了表示那些指数为负数的浮点数),再转换为二进制。
fraction:23位,小数部分。
相关文章推荐
- 数据(整型数、浮点数)在计算机内存中的存储方式
- 浮点数在计算机中存储方式
- [转载]浮点数在计算机中存储方式
- 计算机的数据存储及VC&GCC的数值范围
- 4、数据在计算机中的存储形式和运算
- 计算机内部浮点型数据的存储
- 浮点数在计算机中存储方式
- 计算机为什么使用补码来存储数据
- float数据在计算机内存中的存储方法
- Flex ActionScript 3.0 SharedObject 用于在用户计算机或服务器上读取和存储有限的数据
- 浮点数的计算机存储格式和二进制数之间的转换过程
- 浮点数在计算机中存储方式 (转)
- 浮点数在计算机中的存储方式
- 浮点数在计算机中存储方式 转自:http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html
- 计算机的数据存储及VC&GCC的数值范围
- 浮点数在计算机中存储方式
- 数据在计算机中的存储方式
- 浮点数在计算机中如何存储
- 浮点数在计算机中存储方式
- 浮点数在计算机中存储方式