C语言编程大小端问题示例详解教程

今天想给大家分享的,是数据存储中的大小端问题,今天的分享主要分为三个部分,分别是如何理解大小端,大小端的基本概念以及大小端是如何影响数据存取的。

如何理解大小端

首先先带大家了解一个权值的概念。

对于多位数,处在某一位上的“i”所表示的数值的大小,称为该位的位权,可以简单理解为权值。

权值大的即为高权值位,权值小的即为低权值位,例如 0x010001,从左边起第一个1表示的是1*2^7,第二个1表示的是1*2^0,事实上,这也是我们通常所说的位置化数字系统。

在计算机中,数据按照字节为单位,有高权值位和低权值位之分,同样的,显而易见,地址也同样有高权值位和低权值位之分,为什么呢?因为不同的地址,在计算机中也是由二进制数字表示的,不过此处应该称为高地址位和低地址位,看图也可得知。

C语言编程大小端问题示例详解教程_第1张图片

看上面这些地址,很容易得出,左侧为高地址位, 右侧为低地址位。

既然高权值位和低权值位以及高地址位和低地址位已经阐明,那么到底该如何理解大小端呢?

C语言编程大小端问题示例详解教程_第2张图片

 可以看出,数据有两种存储形式,大小端可以简单的理解成数据在内存中的两种存储形式!

大小端的基本概念

C语言编程大小端问题示例详解教程_第3张图片

下面将给出一个以字节为单位进行存储的数字在内存中的大小端存储形式帮助大家理解这个概念:

 C语言编程大小端问题示例详解教程_第4张图片

大小端是如何影响数据的存取的

大小端两种存储方案,本质上是数据和空间按照字节为单位的一种映像关系。

C语言编程大小端问题示例详解教程_第5张图片

此处举的是小端的情况,事实上,这类似于栈的先进后出的原则。

C语言编程大小端问题示例详解教程_第6张图片

C语言编程大小端问题示例详解教程_第7张图片

事实上,上述存与取的方式与下面C程序地址空间正是一致的,即压栈与出栈的过程符合先进后出。

C语言编程大小端问题示例详解教程_第8张图片

好了,今天的分享到此结束,希望大家能够有所收获,如果文章中有一些不足或者错误的地方,希望大家能够不吝指正,更多关于C语言大小端的资料请关注脚本之家其它相关文章!

你可能感兴趣的