c语言初识-大端小端

文章介绍了计算机内存中大端和小端存储模式的概念,其中大端模式将二进制低位存放在高地址,而小端模式则相反。通过示例代码展示了如何检测系统采用的存储模式,并解释了在截断操作中低位数据被保留的原理。文章还提醒注意不同编译器可能存在的存储差异。
摘要由CSDN通过智能技术生成

大端:二进制数据低位,存放于内存栈中的高地址处,二进制高位在栈中的低地址处

 

小端:二进制数据低位,存放于内存栈中的低地址处,二进制高位在栈中的高地址处

PS:大端:小头在高处,尾巴在低处        小端 :小头在低处,尾巴在高处

 	//大小端检测函数
	if (check_sys())
		printf("小端\n");
	else
		printf("大端\n");
int check_sys() {
	int a = 1;
	char* p = (char*)&a;
	//*p == 1; 说明字节地位在前;
	return (*p);
}

// int a = 00000000 00000000 00000000 00000001

            二进制高位                                        二进制地位:00000001

//内存中十六进制存储:第一种: 00 00 00 01                  大端 (二进制低位,在栈中高地址处)

//                                    第二种: 01 00 00 00                  小端 (二进制低位,在栈中低地址处)    

编译器中内存存储的a

当发生截断,截断从二进制低位开始保留,二进制高位会被舍去,截断后的结果分两种;

                      (char*)&a = 0x01 ==char *p        返回1;

                     (char*)&a = 0x00 ==char *p        返回0;

返回的就会是编译器在低位置存放的二进制数据;

                      为0,说明存储的是0x00 00 00 01;

                      为1,说明存储的是0x10 00 00 00;

注:不同编译器存储方式可能会有差别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值