其他分享
首页 > 其他分享> > 简单理解大端小端

简单理解大端小端

作者:互联网

数是按字节存储的

十进制数4660是如何在计算机内存中存储的?我们知道计算机存储的单元是字节,4460转换成十六进制,一共有四字节,因为

char arr[] = { 0x12,0x34 };
std::cout << "Big Endian will be:";
std::cout << ((0x34 << 8) + 0x12) << std::endl;
std::cout << "Little Endian will be:";
std::cout << ((0x12 << 8) + 0x34)<<std::endl;
char arr2[] = { 0x34,0x12 };
std::cout<<*(uint16_t *)arr2;

地址高低是什么意思?

假设我们眼前有一张充满格子的稿纸,规定从左往右,先写下的称为低地址,后写下的是高地址,这个规定和大小端没有关系。

中国古文正规的书写方式是:竖书成行,自上而下写满一行后,再自右向左换行。

对于一个词“你好”,正常情况,“你”写在左边,“好”写在右边,换句话说,“你”在低位,“好”在高位;当然如果你要特立独行一下,你也可以反过来,,“好”写在左边,“你”写在右边,换句话说,“你”在低位,“好”在高位;

左边的格子右边的格子

因为这是一个有意义的词,我们在阅读到这个词时,可以明确知道表达的是问候词“你好”,

假设我们将一个欠款金额写在纸上,按照默认习惯2在左侧,1在右侧。

左边的格子右边的格子
21

这时候,写的顺序就尤为重要,因为不规定书写顺序,可能回导致不同的欠款金额:

好家伙,差了9块钱。这也就说明,书写顺序对于解读来说是必要的,不同书写顺序可能导致记录的内容有不同的解读。

在计算机领域,正常写,我们称为大多数人写的方式为大端;特殊写,小部分人书写的方式为小端。一个系统是以大端或小端进行读写,取决于具体的CPU类型:

那么在实际编程中,这个规则是如何体现的呢?

我们知道计算机是以字节为单位存储数据,对于一个int型数据0x12345678(32位),必须将这个数分为四个字节写入以字节为计算机内存,顺序取决于计算机端种类。观察下面程序:

int a = 0x12345678;
char* ptr = (char *)&a;//因为char *恰好是一个字节,指针+1等于移动至下一个字节 

std::cout << std::hex << (int)*ptr << std::endl;;
std::cout << std::hex << (int)*(ptr + 1) << std::endl;
std::cout << std::hex << (int)*(ptr + 2) << std::endl;
std::cout << std::hex << (int)*(ptr + 3) << std::endl;

如果是一个大端系统,那么那就应该是12 34 56 78;如果是一个小端系统,那么则为0x78 56 34 12,因为程序运行在x86,所以结果如下:

1

没错他是一个小端系统。

标签:小端,顺序,字节,格子,书写,char,理解,大端
来源: https://blog.csdn.net/weixin_39258979/article/details/118723479