标签:style blog http color os io strong for
int在32位计算机中占4个字节,主要是想弄清楚这4个字节的在内存中存放的顺序。
1 #include <iostream>
2
3 using namespace std;
4
5 typedef struct int_char
6 {
7 int a;
8 unsigned char *b;
9 };
10
11 int main()
12 {
13 int_char A;
14 int i;
15 //test int;
16 A.a=0x01ab02cd;
17 A.b=(unsigned char *)&A.a;
18 for(i=0;i<4;i++)
19 printf("%02X\n",*(A.b+i));
20 cout<<""<<endl;
21 //test short;
22 short c=0x01ab;
23 A.b=(unsigned char *)&c;
24 for(i=0;i<2;i++)
25 printf("%02X\n",*(A.b+i));
26
27 getchar();
28 return 0;
29 }
输出结果为:
CD
02
AB
01
AB
01
由此可见,int,short均为低字节存在低地址,高字节存在高地址;
这个链接里面讲的现在32位数存储只剩两种:低位优先(little—endian)和高位优先(big—endian)。
而用哪种模式存储是由CPU决定的,大多数计算机按高位优先顺序存储32位的数,但基于Intel CPU的计算机按低位优先顺序存储32位的数。
我的电脑是采用的CPU是Intel的,这也印证了我之前的结果,先存储低字节再到高字节这种顺序,也就是低字节存在低地址,高字节存在高地址。
引申:
--------------------------------------------------------------------------------
新问题:
0xAB是按我们正常的思路1010 1011存放,还是1101 0101这样反过来存放?
【C/C++语言】int 在计算机内部的存储,布布扣,bubuko.com
标签:style blog http color os io strong for
原文地址:http://www.cnblogs.com/ykyimin/p/3912212.html