社区
C++ 语言
帖子详情
关于Big-Endian 和 Little-Endian 的区别
Kurama2005
2005-06-18 11:18:31
我现在做的这个项目中,MMI层和下层用的字编码都是UCS2,看资料中提到两个层次用的分别是Big-Endian 和 Little-Endian ,请教大侠关于Big-Endian 和 Little-Endian 的区别,我上网查了,但还是不明白……
...全文
181
6
打赏
收藏
关于Big-Endian 和 Little-Endian 的区别
我现在做的这个项目中,MMI层和下层用的字编码都是UCS2,看资料中提到两个层次用的分别是Big-Endian 和 Little-Endian ,请教大侠关于Big-Endian 和 Little-Endian 的区别,我上网查了,但还是不明白……
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sea2000cn
2005-06-18
打赏
举报
回复
Big-Endian 和 Little-Endian 字节排序
字节排序 含义
Big-Endian 一个Word中的高位的Byte放在内存中这个Word区域的低地址处。
Little-Endian 一个Word中的低位的Byte放在内存中这个Word区域的低地址处。
必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)按Big-Endian或者Little-Endian的不同操作来处理字节。
一个例子:
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
liubingqian
2005-06-18
打赏
举报
回复
《深入理解计算机系统》里有详细讲解。
简单的说,小端法机器是先存放数据的低有效位,再存放高有效位;大端法机器正好相反。
sunman1982
2005-06-18
打赏
举报
回复
你说得大端机和小端机吧,
小端机是说按照最低有效字节到最高有效字节的顺序列出字节,大端机相反
shockwave_115
2005-06-18
打赏
举报
回复
计算机存储时一个是从高位开始存储一个是从低位开始
zhousqy
2005-06-18
打赏
举报
回复
#include <stdio.h>
int
main(int argc, char **argv)
{
union {
short s;
char c[sizeof(short)];
} un;
un.s = 0x0102;
if (sizeof(short) == 2) {
if (un.c[0] == 1 && un.c[1] == 2)
printf("big-endian\n");
else if (un.c[0] == 2 && un.c[1] == 1)
printf("little-endian\n");
else
printf("unknown\n");
} else
printf("sizeof(short) = %d\n", sizeof(short));
exit(0);
}
shockwave_115
2005-06-18
打赏
举报
回复
怎么写一个函数判断机器是big_endian还是little_endian?
Li
ttle
-
endian
和
big
-
endian
的
区别
Li
ttle
-
endian
和
big
-
endian
是两种不同的字节序(byte order)格式,用于存储多字节数据(如整数)在计算机内存中的表示方式。字节序描述了数据的字节排列顺序。
Big
Endian
和
Li
ttle
Endian
模式的
区别
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用
big
endian
方式存储数据,而x86系列则采用
li
ttle
endian
方式存储数据。那么究竟什么是
big
endian
,什么又是
li
ttle
endian
呢? 其实
big
endian
是指低地址存放最高有效字节(MSB),而
li
ttle
...
Big
Endian
和
Li
ttle
Endian
模式的
区别
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用
big
endian
方式存储数据,而x86系列则采用
li
ttle
endian
方式存储数据。那么究竟什么是
big
endian
,什么又是
li
ttle
endian
呢? 其实
big
endian
是指低地址存放最高有效字节(MSB),而
li
ttle
end...
关于计算机中
Endian
(
big
-edian和
li
ttle
-
endian
)存储机制的由来、特点和
区别
转自:http://blog.minidx.com/2008/10/22/1570.html
endian
:字节存储次序 有人问起
Endian
是什么,告诉他就是计算机中是“大尾”还是“小尾”,
Li
ttle
-
Endian
,就是我们在学习汇编时候的高高低低原则,而Bit-
Endian
就是刚刚相反,
Li
ttle
-
Endian
主要用在我们现在的PC的CPU中,
Big
-
Endian
则应用在目前的Mac
Big
Endian
和
Li
ttle
Endian
区别
就拿上面的0x12345678来说,你的程序传递给别人的一个数据,将指向0x12345678的指针传给了JAVA程序,由于JAVA采取
big
endian
方式存储数据,很自然的它会将你的数据翻译为0x78563412。是的,就是这种后果。而假如要传输一个32比特的数的话,由于这个数在
li
ttel
endian
方存储时占了4个字节,而网络传输是以字节为单位进行的,
li
ttle
endian
方的CPU读出第一个字节后发送,实际上这个字节是原数的LSB,到了接收方反倒成了MSB从而发生混乱。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章