大端(Big-Endian)和小端(Little-Endian)

大端(Big-Endian)和小端(Little-Endian)

采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。

比如0x3132的存放形式

大端模式:31 32 //符合人类的正常思维

小端模式:32 31

互联网使用的网络字节顺序采用大端模式进行编址,而主机字节顺序根据处理器的不同而不同,如PowerPC处理器使用大端模式,而Pentuim处理器使用小端模式。


示例1

#include<stdio.h>

int main(void )

{

shorttest;

test= 0x3132;

char*c = (char *)&test;

inti;

for(i= 0; i < sizeof(short); ++i){

printf("%x", *c++);

}

printf("\n");

return0;

}


运行结果:

32 31

证明我的处理器是小端模式


示例2: 用gdb查看变量地址的内容

#include<netdb.h>

#include<sys/socket.h>

#include<stdio.h>

intmain(int argc, char **argv)

{

shorta = 0x0102;

shortb = htons(a);


return0;

} 

gdb进行调试

(gdb)x/2xb &a                       //gdb调试命令:x/<n/f/u><addr>

0xbffff39e: 0x02 0x01                      //再次证明我的处理器是小端模式

(gdb)x/2xb &b

0xbffff39c: 0x01 0x02

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

原文:http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值