首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言课程学习】:计算机中大端和小端字节序

【C语言课程学习】:计算机中大端和小端字节序

作者头像
用户11396661
发布2024-12-09 14:58:39
发布2024-12-09 14:58:39
1.2K0
举报
文章被收录于专栏:C++开发C++开发

一.大小端的基本概念:

字节序: 指多字节在存储器中的存放顺序。

大端存储:

数据的低位放在内存的高位置处,高位放在内存的低位置处。

小端存储:

数据的低位放在内存的低地址处,数据的高位放在内存的高位。

下面是4个字节(int)类型按16进制在大小端存放的区别。2个16进制数占一个字节,字节的内部是不会改变顺序的,大小端的区别只存在字节之间的顺序不同。

二.判断处理器大小端的两种方法

下面的方法都用数据0X00000001来判断

🍭方法一:强制类型转化。

代码语言:javascript
复制
#include<iostream>
using namespace std;

void way1() {
	int a = 1;
	int b = *((char*)&a);
	if (b == 1)
	{
		cout << "小端" << endl;
	}
	else
	{
		cout << "大端" << endl;
	}
}
int main()
{
	way1();
	return 0;
}

对b进行一系列的操作,实际上是取到了a的低地址处,。

如果是大端,拿到的是0;

如果是小端,拿到的是1;

🍭方法二:用联合体进行访问

代码语言:javascript
复制
#include<stdio.h>
union fun
{
	char a;
	int b;
}s;
int main()
{
	s.b = 1;
	if (s.a == 1)
		printf("小端");
	else
		printf("大端");
	return 0;
}

联合体的特点是共用一块内存,s联合体总共开了4个字节大小的空间,如果存入数据b,就会把空间占满,s.a就可以拿到b在内存中存储的前一个字节。

我们常用的x86是小端存储结构。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.大小端的基本概念:
  • 二.判断处理器大小端的两种方法
    • 🍭方法一:强制类型转化。
    • 🍭方法二:用联合体进行访问
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档