您的位置:首页 > 其它

大端(Big Endian)和小端(Little Endian)

2015-04-13 21:15 363 查看
对于多字节数据,如在32位系统中的一个无符号短整型数:

unsigned short usTestNum = 0x1122;

该数据占两个字节,在计算机中地址索引的最小单位是字节,也就是说高位0x11和地位0x22在计算机中分别有一个地址,那么谁的地址大谁的地址小呢。

大端模式:高位存放于低地址,即如果0x11的地址小于0x22的地址,就是大端模式;

小端模式:地位存放于低地址,即如果0x22的地址小于0x11的地址,就是小端模式;

那么计算机到底是大端模式还是小端模式是由CPU和操作系统决定的,下面提供一个简单的判断大小端的程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{

short sTestData = 0x1122;
unsigned char cNum = *((unsigned char*)(&sTestData));

if (cNum == (unsigned char)0x11)
{
printf("big endian\n");
}

if (cNum == (unsigned char)0x22)
{
printf("little endian\n");
}

return 0;
}
目前我使用的计算机不论是windows系统还是ubuntu系统是小端模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: