review 6

1:已知数据data,给data的第六个bit位置1,对data的第4个bit位置0

  4 int main(int argc, const char *argv[])
  5 {
  6     int data=0;
  7     int a,b;
  8     printf("请输入数据data\n");
  9     scanf("%d",&data);
 10     a=data|1<<5;
 11     b=a&~(1<<3);
 12     printf("%d\n",b);
 13                                                                                        
 14     return 0;
 15 }

对于已知数据data,我们可以通过位运算来设置或者清除特定位置的bit

要将data的第六个bit位置1,可以使用按位或运算符(|)和一个掩码。掩码是一个只有第六个bit为1,其他位都为0的数。可以使用左移操作符(<<)来创建掩码。

下面是设置第六个bit的代码示例:

data = data | (1 << 5);

其中,1 << 5将1左移5位,得到的结果是二进制数100000,即十进制数32。通过将data与掩码进行按位或运算,可以将第六个bit位置1。

要将data的第四个bit位置0,可以使用按位与运算符(&)和一个反向的掩码。反向掩码是一个只有第四个bit为0,其他位都为1的数。可以使用逻辑非运算符(~)和左移操作符(<<)来创建反向掩码。

下面是清除第四个bit的代码示例:

data = data & ~(1 << 3);

其中,~(1 << 3)将1左移3位得到二进制数00001000,然后取反得到11110111,即十进制数247。通过将data与反向掩码进行按位与运算,可以将第四个bit位置0。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值