共用体及大小端存放问题

目录

1.共用体求大小。

 2.应用(大小端问题)

欢迎批评指正!!!


共用体也就是联合体,变量共用一块空间。

1.共用体求大小。

结构体的总大小要能整除联合体成员中最大的内置类型大小,有人用了,其他人就不能用。以免发生错误。

例:答案为24

解析:联合体中成员最大的大小为4*5=20,最大的内置类型大小为long long,为8,故24可以被8整除。

 2.应用(大小端问题)

小端存放:低端存放低地址数据

大端存放:低端存放低地址数据

如:0x12345678,‘12’为高字节,‘78’为低字节

小端存放:

低地址->高地址

78563421

大端存放:

低地址->高地址

12345678

①为什么一个字节存两位十六进制值?

1byte=8bit

一个十六进制数表达0-15

2^4=16,故四位存放一个十六进制数,1个字节存放两个是二进制数。

②1在小端存放和在大端存放的情况

int a=1;

             a: 高地址->低地址

0000 00000000 00000000 00000000 0001

小端存放:高地址->低地址

0000 00000000 00000000 00000000 0001

大端存放:高地址->低地址

0000 00010000 00000000 00000000 0000

③所以如果只输出一个字节,小端存放输出的字节为1,大端存放输出的值为0。

④综上也就是说当一个int类型的1转换成char类型时,小端存放输出的字节为1,大端存放输出的值为0。

代码如下:

#include<stdio.h>
union Out
{
	int a;
	char b;
}out;
int main()
{
	out.a = 1;
	printf("%d", out.b);
}

结果为1.

一般来说,电脑是小端,手机是大端。

欢迎批评指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值