什么是大小端?如何判断大小端

本文介绍了计算机内存中整形变量的大小端存储方式。大小端存储主要涉及数据的字节顺序,其中小端存储将低序字节存放在低地址,而大端存储则相反,将高序字节存放在低地址。通过一个简单的C语言程序,可以判断系统是采用大端还是小端存储。了解这一点对于跨平台编程和理解底层数据处理至关重要。
摘要由CSDN通过智能技术生成

       通过上篇文章,我们知道了整形变量在内存中是以二进制方式存储的,今天我们来聊一聊,它的存储顺序(大小端)

目录

一、什么是大小端?

二、如何判断是大端存储还是小端存储


对于一个由2个字节组成的16进制整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址(低地址),这称为小端(little-endian)字节序;另一种方法是将高序字节存储在起始地址(低地址),这称为大端(big-endian)字节序。

1字节=8个二进制位

注释:(什么是低序字节、高序字节)

int main () 
{
     int a=2;
     return 0;
}
(未存储时)a=2转化为16进制时为:(00就是高序字节)0x00  00  00  02(02就是低序字节)

小端存储:

大端存储:

总结

小端存储:低序字节放到低地址,高序字节放到高序地址。        =====》低√低,高√高

大端存储:高序字节放到低地址,低序字节放到高地址。           =====》高√低

二、如何判断是大端存储还是小端存储

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 1;
	char* p = (char*)&a;
	if (*p == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

原理:电脑读取内存是从内存的低地址开始读取的,所以只要知道第一个或者最后一个字节的值就可以判断大小端了,那么如何得到第一个字节呢?

这里需要补充一个东西:访问权限。

指针的类型决定了指针的访问权限

对于char*型指针它的访问权限为1byte(因为char型变量的内存大小就是1byte),同理,int*类型的指针它的访问权限为4byte。所以我们可以用char类型的指针获得int a的一个字节。

上一篇文章:整形变量在内存中的存储链接:

写文章-CSDN博客icon-default.png?t=M276https://mp.csdn.net/mp_blog/creation/editor/123248536

求关注

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值