计算机系统-内存读取/大端法小端法/内存最小单位

下面这个代码演示了CPU是采用大端法还是采用小端法

int main()
{
	 union MyUnion
	{
		int a;
		char b;
	};
	 MyUnion mu;
	 mu.a = 1;
	if (mu.b == 1) {
		printf("xiaoduan");
	}
	if (mu.b == 0) {
		printf("daduan");
	}

}

大端法小端法:这个概念属于CPU存数据时候的概念,也就是说CPU往内存中存数据的时候,是采用大端法往内存中存数据,还是小端法往内存中存数据
大端法:存的时候,会先把数值的位存到内存的低位
小端法:存的时候,会先把数值的位存到内存的低位
大端法的大,指的是数值的高位,小端法的小,指的是数值的低位
不同的CPU方式不同,以前英特尔都是小端,AMD都是大端,现在的CPU几乎大端小端都支持,前提是需要我们指定大端还是小端,目前在我的电脑酷睿I7上默认是小端法

上述代码中定义了一个联合体,那么当代码走完mu.a = 1;的时候,内存如图
在这里插入图片描述
其中黄色表示char b所在的位置,因为读取的时候一定是从内存低位置读取,所以读取的时候一定先读取0x0000地址,当该地址是0,那么就是大端法,该地址是1,那么就是小端法

内存读取:在一块连续的内存中,CPU总是先读取低位置的内存,后读取高位置的内存
内存最小单位:众所周知,最小单位是bit,但是我个人觉得如果把最小单位理解成bit,将是一个学习的障碍,不如干脆认为内存最小单位是byte,因为所有语言,基本数据类型都是byte组成的,我们没人听说过XXX的大小是0.5字节这样的话吧???当然,有些人可以说位运算,但是位运算之后,我们处理结果的时候,多数还是对字节操作

发布了157 篇原创文章 · 获赞 26 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/u011624903/article/details/103992078