C数据类型

数据的存储方式:
本质上都是01这样的二进制类型,就看应用层如何进行解释。

struct data
{
     int a:2;
     int b:3;     
};

int main()
{
     struct data p;
     p.a = 2;
     p.b = 7;

     printf("p.a=%d\n",p.a);
     printf("p.b=%d\n",p.b);

     return 0;
}


输出
p.a=-2;
p.b=-1;

结构体data,也就是p.a只占2bit,p.b占3bit;2换成二进制是10,计算机10,第一位是符号位,是负数,计算机数字是用补码表示的,负数真值是数据位(除符号位外的其它位)取反加1,就是10,十制就是2,加上符号位表示负数,所以p.a=-2;
同样的,p.b点3bit,7换成二进制就是111,第一位是符号位,数据位反转加1就是1,真值为-1;


typedef struct data
{
int a:3;
int b:5;
char c;
short int d;
}Data;


int main()
{
int k = 0x12345678;
Data *p = &k;

printf("p->a=0x%x\n",p->a);
printf("p->b=0x%x\n",p->b);
printf("p->c=0x%x\n",p->c);
printf("p->d=0x%x\n",p->d);


return 0;
}

p->a = 0x0

p->b = 0xf

p->c = 0x56

p->d = 0x1234

结构体data占4个字节,高字节存高位;所以前5位是a,后3位是b.最后2个字节放d;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值