大小端模式 续
union w
{
??? int a;
??? char x[2];
}e;
?
e.x[0]=10;
e.x[1]=1;
?
cout<<e.a<<endl;
那么運算結果在little-endian模式中的結果為266,那么原因是什么呢
我個人的理解
小端模式下:
?printf("0x%x", e.a); 結果為0x10a
大端模式下:
?printf("0x%x", e.a); 結果為0xa01
?
由于是小端模式,那么char x[0]肯定是指向最低的地址的,那么我們假設低地址為4000,那么在400存的數據就是10,以十六進制表示就是0x0a;然4001地址存放的就是0x01;由于存放的最大數據類型是Int型,占有四個字節,因此,地址知道4003;都是0x00;那么在小端模式中的低地址存放的是低字節,因此,
4000??? 0x0a;
4001??? 0x01;
4002??? 0x00;
4003??? 0x00;
?
因此可得數據為ox10a;對應的十進制為266;
總結
- 上一篇: MinGW与MSVC编译的区别
- 下一篇: 助你成为嵌入式高手的100多个软硬件开源