前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言—大小字节序和字节序判断

C语言—大小字节序和字节序判断

作者头像
_孙同学
发布2024-10-21 20:50:31
840
发布2024-10-21 20:50:31
举报
文章被收录于专栏:技术分享

1. 什么是大小端?

超过一个字节的数据在内存中存储时,就有存储顺序的问题,按照不同的存储顺序分为大端字节序存储和小端字节序存储。 大端(存储)模式: 是指数据的低位存储在高地址处,高位存低地址处. 小端(存储)模式: 是指数据的低位存低地址处,高位存高地址处.

高低位的区分: 比如123中的3就为最低位,1为最高位. 16进制的0x11223344中44就是最低位.

2. VS中的存储模式

代码语言:javascript
复制
int main()
{
  	int n = 0x11223344;
  	
	return 0;
}

调试这行代码:

由图中可以看出VS是小端字节序存储

3.设计一段代码判断当前机器的字节序

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	int n = 1;  //n的16进制表示形式为0x00000001
	            //如果是大端存储就为 00 00 00 01
	            //如果是小端存储就为 01 00 00 00
	            //只拿一个字节,大端存放拿的就是00  小端存放拿的就是01
	if(*(char*)&n == 1)  //将n强制类型转换为char*类型,每次只访问一个字节,再解引用.
	                    //注意:将n直接强转为char类型是不行的,因为强制类型转化位char拿的总是最低位的一个字节.
		printf("小端");
	else
	    printf("大端");	
	return 0;
}

用函数方式实现

代码语言:javascript
复制
#include<stdio.h>
check_sys()
{
	int n = 1;
	  return *(char*)&n;    //*(char*)&n这个表达式的结果无非就是0或1,所以直接返回*(char*)&n就行.
}
int main()
{
 int ret = check_sys();
 if(ret == 1 )
	printf("小端");
 else
    printf("大端");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是大小端?
  • 2. VS中的存储模式
  • 3.设计一段代码判断当前机器的字节序
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档