概述
提到体系结构时,经常遇到大小尾端的概念,这里做个总结。
类别: C 查看评论
big endian:大尾端,也称大端(高位)优先存储。
little endian:小尾端,也称小端(低位)优先存储。
如下00000000 00000000 00000000 00000001的存储
大尾端:
00000000 00000000 00000000 00000001
addr+0 addr+1 addr+2 addr+3 //先存高有效位(在低地址)
小尾端:
00000001 00000000 00000000 00000000
addr+0 addr+1 addr+2 addr+3 //先存低有效位(在低地址)
故要判断机器的体系结构是大尾端还是小尾端,以下程序可以完成任务:
|
大小尾端数据间的相互转换
/*
usage: to convert between the form of big-endian and little-endian
author: ydzhang
date: 2008年12月6日20:23:48
*/
#include <stdio.h>
typedef unsigned int u32;
typedef unsigned short u16;
#define BSWAP_16(x)
(u16) ( ((((u16)(x) & 0x00ff)) << 8)
| (((u16)(x) & 0xff00) >> 8) )
u16 bswap_16(u16 x)
{
return ((x & 0x00ff) << 8) | ((x & 0xff00) >> 8);
}
u32 bswap_32(u32 x)
{
return ((x & 0x000000ff) << 24) |
((x & 0x0000ff00) << 8) |
((x & 0x00ff0000) >> 8) |
((x & 0xff000000) >> 24);
}
int main()
{
u16 num_16 = 0x1234;
u32 num_32 = 0x12345678;
printf("%xn", bswap_16(num_16));
printf("%xn", BSWAP_16(num_16));
printf("%xn", bswap_32(num_32));
return 0;
}
类别: C 查看评论
最后
以上就是迷路蚂蚁为你收集整理的大尾端 小尾端的全部内容,希望文章能够帮你解决大尾端 小尾端所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复