`
kenby
  • 浏览: 716856 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于大端法和小端法

 
阅读更多

 

typedef union {
	int  n;
	char p[sizeof(int)];
} union_t;

union_t ut;
memset(&ut,0, sizeof(ut));
ut.p[0] = 13;
printf("%d\n", ut.n);
 

输出结果是什么?

 

 

一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian

的。少部分,如MAC OS ,是Big Endian 的。

 

所谓MSB (Most Significant Byte)就是,一个数字中,最重要的那位,

比如,12004,中文读作,一万两千零四,那最高位的1,就表示了一万,此处就称作MSB,最有意义的位.

而LSB (Least Significant Byte)与MSB相反,个位数4就可以称为LSB,

在草稿纸上演算的时候,我们习惯左边写数的MSB,右边写数的LSB。

 

使用Little Endian方式存储数据时,数据的MSB存放在高地址,LSB存放在低地址

比如 0x11223344 ,它在内存中存储为

44 33 22 11 

低地址-->高地址

使用Big Endian方式存储数据时,数据的MSB存放在低地址,LSB存放在高地址

比如 0x11223344 ,它在内存中存储为

11 22 33 44

低地址-->高地址

 

值得注意的是,大端法和小端法讨论的都是字节与字节之间的顺序,至于一个字节内的8个比特,无论大端法还是

小端法,顺序都是一样的,即右边存储低位,左边存储高位。再看一个例子:

 

已知内存中从低地址到高地址存储的4个字节依次是:

11 22 33 44

求这个数是多少?

关键是找出哪头是MSB,哪头是LSB

 

如果该机器是Little Endian,

则低地址存放的是LSB,所以11是LSB,高地址是MSB,所以44是MSB

所以这个数等于

0x44332211

 

如果该机器是Big endian,

则低地址存放的是MSB,所以11是MSB,高地址是LSB,所以44是LSB

0x11223344

 

这个笔试题的意思是,已知内存中从低地址到高地址存储的4个字节是

0D 00 00 00

使用小端法表示,这个数等于0x0000000D,即13。

 

再引申一个问题,试写一个函数判断机器是否为Big Endian。

思想是取一个short数0x1122的第1个字节,若这个字节等于0x11,则是大端法

 

int is_big_endian()
{
	unsigned short test = 0x1122;
	if(*( (unsigned char*) &test ) == 0x11)
		return 1;
	else
		return 0;
}
分享到:
评论

相关推荐

    基于大端法、小端法以及网络字节序的深入理解

    关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或...它在大端法和小端法的系统内中,分别如图1所示的方式存放。   网络字节序 我们知道网络上的数据流是

    C语言实现折半查找法(二分法)

    折半查找法也叫做二分查找,顾名思义,就是把数据分成两半,再判断所查找的key在哪一半中,再重复上述步骤知道找到目标key;...如图所示:将该组数据小端记作low,大端记作high,中间值记作mid; 二分法查找

    天津理工大学中加专业计算机结构实验一:数据和程序的机器级表示实验报告(附截图)

    1. 编写函数is_little_endian(),当在小端法机器上编译和运行时返回1,在大端法机器上编译和运行时返回0。 2. 运行show-bytes.c示例代码,确定整数和浮点数的机器字节方式,每种表示包括正负两种情况。整数取学生...

    ImHex16進制編輯器.7z

    數組、指針、結構、聯合、枚舉、位域、使用聲明、小端和大端支持、條件等等! 有用的錯誤消息、語法高亮和錯誤標記 數據導入 Base64 文件 IPS 和 IPS32 補丁 數據導出 IPS 和 IPS32 補丁 數據檢查器允許將數據解釋為...

    ф63.5mm外平钻杆接头抗扭强度数值分析

    采用有限单元法对ф63.5mm外平钻杆接头的抗扭强度进行了数值分析,结果表明,该...母接头此时的最大等效应力为801.9 MPa,位于母接头锥扣的小端螺纹处。分析结果合理地解释了在钻杆实际使用过程中公接头经常先断裂的原因。

    C/C++ 获取自身IP与域名片段的示例代码

    判断大端序小端序: 通常情况下,数值在内存中存储的方式有两种,一种是大尾字节序,另一种是小尾,比如0x01020304这样一个数值,如果用大尾方式存储,其存储方式为01 02 03 04而用小尾方式存储则是04 03 02 01,一般Windows...

    TMS320DM642中文手册

    l 小端模式,大端模式 l 64 位外部存储器接口(EMIF) - 支持异步存储器(SRAM 和EPROM)和同步存储器(SDRAM,SBSRAM,ZBT SRAM 和FIFO)直接接口 - 总共1024Mbyte 可寻址外部存储空间 l 增强的直接存储器访问...

    C 语言常用方法技巧

    大端小端选择 low-endian or high-endian typedef union { short W; /* Word access */ struct { /* Byte access */ #ifdef LOW_ENDIAN byte low, high; /* in low-endian arch */ #else byte high, low; /* in...

    机床调整误差对螺旋锥齿轮齿面影响的研究 (2009年)

    根据准双曲面大轮成形法加工原理及...结果表明:垂直刀位与齿形角对齿面的面锥与小端附近的误差比较敏感;水平刀位与水平轮位对齿面的根锥与大端附近的误差比较敏感;轮坯安装角对齿面的面锥与大端附近的误差比较敏感。

    元器件应用中的光藕合器的主要参数

    (1)输入参数 是指输入端发光器件的主要参数,实际上就是指发光二极管的参数。... 2)极间电容 光稠合器的极间电容是指输大端与输出端之间的分布电容。一般为几个皮法。  3)隔离阻抗 光稠合器的隔离阻抗是指隅合器

    模拟技术中的相线、零线接反自动矫正器 (四)

    无论输大端相线、零线接法如何,它都能使输出端相线、零线的接法保持固定,可确保用电的安全。 电路工作原理 该相线、零线接反自动矫正器电路由晶体管Vl-V3、继电器K、二极管VDl、VD2、电阻器Rl-R3和电容器Cl、C2...

    progisp168.rar

    支持写入系列号(可选大端,小端) 支持所有的时钟校正字写入flash或eeprom(avr芯片) 支持自定义编程芯片(xml文件管理) 支持自定义编程熔丝信息提示信息 支持自定义热键快捷键 支持自定义汉化信息提示 支持...

    PMMA 生产操作与控制:离心干燥的原理.pdf

    湿PMMA ,由螺旋叶片推到转鼓小端排 出。转鼓大端盖上有圆形排列的溢流孔, 清液即母液从溢流孔排出。 02 干燥原理 干燥原理 气流干燥:将散粒状固体物料分散悬浮在高速热气流中,在气力输送下进行干燥 的一种方法。...

Global site tag (gtag.js) - Google Analytics