位运算应用

1.判断int变量是奇数还是偶数

  • a & 1 = 0 偶数
  • a & 1 = 1 奇数

2.求平均值

比如,有两个int类型的变量a和b,求平均数应该是二者相加再除以2,然后,相加后,有可能溢出,所以此时采用位运算

平均值 = (x & y )+ ((x ^ y)>>1)

3.判断一个int变量是不是2的n次幂

((x & (x - 1))== 0)&&(x != 0)

该式为true,则是2的n次幂,反之不是。

4.交换两个int变量

x ^= y;
y ^= x;
x ^= y;

5.求绝对值

   int abs( int x ) 
   { 
     int y ; 
     y = x >> 31 ; 
    return (x^y)-y ;        //or: (x+y)^y 
   }

6. 取模运算,采用位运算实现:

 a % (2^n) 等价于 a & (2^n - 1) 

7. 乘法运算 采用位运算实现

 a * (2^n) 等价于 a << n

8. 除法运算转化成位运算

  a / (2^n) 等价于 a>> n 

9. 求相反数

  (~x+1) 

10.

a % 2 等价于 a & 1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值