【C语言】✨第五十九题→实现一个函数bas()判断大端小端✨

188 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情

🚩write in front🚩   

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜91﹣总榜823⇿全网访问量35w+🏅
🆔本文由 謓泽 发布到掘金(JueJin) 如需转载还请通知⚠
📝个人主页-謓泽 的个人主页 - 文章 - 掘金 (juejin.cn)📃
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏-【C语言】Topic - 謓泽的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

✨第五十九题→实现一个函数bas()判断大端小端✨  

前言:每日人生格言②:一份耕耘,一份收获。
🤔题解思路如下👇 ⒈首先在做本题我们需要了解什么是大端小端,这是本题的关键点。

㈠说明⇢大端存储模式是指内存中的低位保存在内存当中的高地址当中,而数据的高位,保存在内存低地址当中。

㈡说明⇢小端存储模式是指数据中的低位保存在内存当中的低地址当中,而数据的高位,保存在内存低地址当中。

⒉证明⇢内存空间都是有编号的,我们都把内存的低位叫做低地址,编号大的话那么就是叫做高地址,数据是怎么样存储都是可以的。注-当返回到你的程序当中必须要是怎么样存储回来比如说你整形存储的是11 22 44 33 [二进制转换十六进制 1个字节=8个bit位] 那么你到时候就也是需要这样整形存储出来的11 22 44 33。但是我们通常都不会这样去存储内存。通常都是两种存储方法一种叫做大端的存储模式还有一种是小端的存储模式。

⒊假设①⇢0x11 22 33 44 注-在这里这个44就是低位(低八位) 而这个11就是高位(高八位) 那么这个低位要保存到内存的高地址数,而数据的高位保存在低地址处↔大端。

⒋假设②⇢0x44 33 22 11 注-在这里这个44就是低位(低八位) 而这个11就是高位(高八位) 低字节的数据保存在内存当中的低地址处,而高字节的数据就保存在高地址处↔小端。

⒌说明⇢那么就来讲解下解题思路吧,实际这个解题思路是非常的容易的。

⒍注✔变量a,存储在内存当中,假设这个a是20的话,在不知情的情况下,不知道当前是大端还是小端的存储。但是,可以推测是不是大端还是小端,就像上面内容所说的那样。我们可以观察它们的第一个字节,就比如说如下所示👇

int a = 1;

①小端-0x01 00 00 00

②大端-0x00 00 00 01

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int bas()
{
	int a = 1;
	//1.这里我们只需要观察第一个字节即可判断
	//2.强制类型转换char*再通过解引用就可以访问一个字节大小
	//3.记得要取地址a
	if (*(char*)&a == 1)
		return 1;
	else
		return 0;
}
int main(void)
{
	int ret = bas();
	if (ret == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

运行结果🖊:小端
最后:把握今天,全力以赴冲~