什么是Big Endian和Little Endian?

以下是一些要点帮助理解:

1. Big/Little Endian主要指的是字节在内存中的顺序。注意是针对字节(Byte) 的。对于一个字节内的位(Bit)来说,没有Big/Little Endian的说法。非要有个说法的话,bit在byte里面还是按Big Endian的习惯表达的。


2. 什么是Big Endian 或者 Little Endian呢?

下面简单小举一例,即可阐明。假设有一个数12345,按读者习惯的话,从左到右看它,1是这个数字的最高位。现在要把它弄到内存里去,假设每个数字1到5,分别使用一个byte。

a) 那么按Big Endian的方式,从内存的地址由低到高,这个数字在内存里面仍然是按照12345的顺序。

b) 反之如果是按Little Endian的方式,从内存的地址有低到高,这个数字就被存成54321的样子了。

 

3. why are they exsited & impact?

使用Big Endian的主:

a) IBM's 370 mainframes, most RISC-based computers, and Motorola microprocessors use the big-endian approach.

b) TCP/IP also uses the big-endian approach (and thus big-endian is sometimes called network order).

c) Java Language

 

使用Little Endian的主:

a) Intel processors (CPUs) and DEC Alphas and at least some programs that run on them are little-endian

所以在实际使用中要注意如果是在不同机器上传数据的话,要有意识是不是要作Big Endian到Little Endian的转换。更具体一点,例如在C/C++ 语言编写的程序里,数据存储顺序是跟编译平台所在的CPU 相关的;JAVA 编写的程序则唯一采用Big Endian。 如果用C/C++ 语言在x86 平台下编写的程序跟JAVA 程序互通的时候,就要进行必要的字节序转换工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值