码迷,mamicode.com
首页 > 其他好文 > 详细

大端 小端

时间:2016-07-15 13:16:55      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

想看看苹果系统的数据存储是大端存储还是小端存储:

首先小端,就是把低位存放在低地址。如0x 12345678,这个32位的十六进制数,从高位到低位依次是 0x 12, 0x 34,0x 56,0x 78;采用小端方式:最低为 0x 78 在最前面,故而内存中从低地址到高地状依次是0x 78,0x 56, 0x 34, 0x 12;

大端方式亦然。比较符合人的理解,高位在内存中的低地址,故而内存中从低地址到高地状依次是0x 12,0x 34, 0x 56, 0x 78;

很简单,写一个union ,联合里的数据类型公用一块内存,不同时间只能有一种数据类型,我们定义一个包含int 类型和char 类型的联合,给它赋值一个int i = 1;然后查看char 类型的ch 的值,如果是小端方式存储,内存中从低地址到高地状依次(0x 01,0x 00,0x 00,0x 00),那么,char 类型的ch 截取低地址的0x 01。反之,大端内存中从低地址到高地状依次(0x 00,0x 00,0x 00,0x 01),会截取到 低地址的0x 00;

地址偏移

        大端模式                   小端模式

0x00    12OP0                 78OP3

0x01    34OP1                 56OP2

0x02    56OP2                 34OP1

0x03    78OP3                 12OP0

 

 1 //判断系统大小端存储的方法
 2 int checkSystem() {
 3     union check{
 4         int i;
 5         char ch;
 6     } c;
 7     c.i = 1;
 8     return (c.ch == 1);// 0x 01 00 00 00
 9 }
10 int main(int argc, const char * argv[]) {
11     int check = checkSystem();
12     if (check == 1) {
13         printf("小端模式存储\n");//
14     }else {
15         printf("大端模式存储\n");
16     }
17     
18     return 0;
19 }

结果发现苹果采用小端方式存储数据。

 

大端 小端

标签:

原文地址:http://www.cnblogs.com/wjw-blog/p/5673132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!