一、整形在内存中的存储(以Visual Studio为例)
1.1 正数在内存中的存储
int a = 10; int b = 0x1234;(16进制显示)
--------------------------------------------------------------------------------
a的值为 10;其二进制为1010;十六进制为A
a为int整形,占用4个字节,即32位;
在计算机眼里 10是00000000 00000000 00000000 00001010;
十六进制显示 是00 00 00 0a。
编译器内存显示如下:
---------------------------------------------------------------------------------
b的值为11064;其二进制为0001001000110100;十六进制为 1234
在计算机眼里 b是 00000000 00000000 00010010 00110100
十六进制显示是 00 00 12 34。
编译器内存显示如下:
---------------------------------------------------------------------------------
编译器内存中显示为 0a 00 00 00 !(就好比一千二百三十四1234,显示为 4321)
编译器内存显示的是地址低位在前,高位在后;与我们习惯的阅读顺序相反。
如果其存储的规则与我们阅读顺序一致,即 数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中,又称为小端存储!
反之,数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,称为大端存储。
举例1:
unsigned int a= 0x1234; unsigned char b = *(unsigned char *)&a;
小端 b的值为 0x34 ;大端b的值为0x00!
举例2
union Un{
int a;
char b;
}Un;
Un un;
un.a = 1;
return un.b;
小端 un.b = 1;大端 un.b = 0;