给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清a的bit 3,在以上两个操作中,要保持其他位不变。

    #define   BIT3   (0x1   <<   3) 
     static   int   a;  
     //设置a的bit 3:  
    void   set_bit3(void)    
    {  
            a   |=   BIT3;  
    }  
    //清a的bit 3
    void   clear_bit3(void)    
    {  
            a   &=   ~BIT3;  
    }
    //保留第k位  
    void set_bit3(void)  
    {  
        a &= BIT3;  
    } 

0x1表示为2进制就是0001
0x1<<3 = 0001<<3 = 1000 = 0x8

a |= BIT3 相当 a = a | BIT3 相当 a = a | 0x0008;
a &= ~BIT3 相当 a = a & ~BIT3 相当 a = a & 0xFFF7;

a=3,b=5,不用第三变量temp,对a和b的值进行交换

如果有第三者temp,a和b交换非常方便:
temp = a;
a = b;
b =temp; 123

若无temp,可以这样做:
a = a + b;
b = a - b;
a = a - b;123

当然,我们可以利用C语言的位运算符:
a = 3;b = 5;
a ^= b;
b ^= a;
a ^= b; 1234

原理是a ^ b ^ b == a; a ^ b == b ^ a;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值