字节顺序-大端/小端、big-endian/little-endian

导读:本篇文章讲解 字节顺序-大端/小端、big-endian/little-endian,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

物理单位长度大于一个字节的时候需要用到字节顺序,常见的有2种:Big-Endian和Little-Endian。

示例:存储0x1234ABCD到内存2000H开始的四个字节中
Big-Endian存储,从2000H开始,依次为ABH CDH 12H 34H;
Little-Endian存储,从2000H开始,依次为CDH ABH 34H 12H;

Big-Endian大端存储:数据的高位字节存放在内存的低地址端,数据的低位字节存放在内存的高地址端。采用这种机制的处理器有IBM3700系列、PDP-10系列、Mortolora位处理器和绝大多数的RISC处理器。

Little-Endian小端存储:数据的低位字节存放在内存的低地址端,数据的高位字节存放在内存的高地址端。采用这种机制的处理器有PDP-11、VAX、Intel系列位处理器和一些网络通信设备。

区别大端和小端

有两种方法:使用宏和使用函数。

1.使用宏

const int endian = 1;
#define is_bigendian()	((*(char*)&endian) == 0)
#define is_little_endian()	((*(char*)&endian) == 1)

2. 使用函数

bool isLittleEndian()
{
	union {
		long val;
		char szChar[sizeof(long)];
	}u;
	u.val = 1;
	if(u.szChar[0] == 1)
		return true;
	else if(u.szChar[sizeof(long)-1] == 1)
		return false;
	throw("Unknown");
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46124.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!