C语言—位运算

按位运算的运算符

移位的时候不能有负数!!!

按位运算符意思及运用
按位异或^若两个为相等,则计算结果为0;否则为1
按位与&若两个位都为1,计算结果为1;否则为0
按位或|若两个位其中一个为1,计算结果为1;否则为0
按位取反~把1位变成0,0位变成1
左移<<i << j : 把i中所有的为向左移动j个位置,空余部位填0,等价这个数乘以2的j次方(所有小于int的类型,移位以int的方式来做,结果是int)
右移>>i >> j : 把i中所有的为向右移动j个位置,空余部位填0,等价这个数除以2的j次方(所有小于int的类型,移位以int的方式来做,结果是int ; 对于unsigned类型,左边填入0;对于signed类型,左边填入原来的最高位,即保持符号不变)

位段

定义位段后,可直接用位段成员名称(与结构相似)访问

若所需要的位超过一个int(即32个比特),编译器会自动变成两个int来存储

struct {
  unsigned int leading : 3;//位段leading大小为3比特
  unsigned int flag1 : 1;//位段flag1大小为1比特
  unsigned int flag2 : 1;//位段flag2大小为1比特
  int trailing : 27;//位段realing大小为27比特
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值