大小端模式 续
union w
{
??? int a;
??? char x[2];
}e;
?
e.x[0]=10;
e.x[1]=1;
?
cout<<e.a<<endl;
那么運(yùn)算結(jié)果在little-endian模式中的結(jié)果為266,那么原因是什么呢
我個(gè)人的理解
小端模式下:
?printf("0x%x", e.a); 結(jié)果為0x10a
大端模式下:
?printf("0x%x", e.a); 結(jié)果為0xa01
?
由于是小端模式,那么char x[0]肯定是指向最低的地址的,那么我們假設(shè)低地址為4000,那么在400存的數(shù)據(jù)就是10,以十六進(jìn)制表示就是0x0a;然4001地址存放的就是0x01;由于存放的最大數(shù)據(jù)類型是Int型,占有四個(gè)字節(jié),因此,地址知道4003;都是0x00;那么在小端模式中的低地址存放的是低字節(jié),因此,
4000??? 0x0a;
4001??? 0x01;
4002??? 0x00;
4003??? 0x00;
?
因此可得數(shù)據(jù)為ox10a;對(duì)應(yīng)的十進(jìn)制為266;
總結(jié)
- 上一篇: MinGW与MSVC编译的区别
- 下一篇: CentOS mysql常用命令