c语言的操作符之按位操作符

c语言的操作符之按位操作符:

& 按位与
  • 对某些位清0或保留某些位
 | 按位或

^ 按位异或
  • 用来使某些特定位的翻转
      eg:10010001的第2,3位翻转
              就是将10010001^00000110=10010001^6
  • 实现两个数的交换(不创建临时变量)

>>右移
  • eg:a>>b表示把a转为二进制后右移b位(去掉末b位),相当于a除以2的b次方(取整).
  • 实际应用:如二分查找、堆的插入操作。 最大公约数的二进制算法用除以2操作来代替慢得出奇的mod运算,效率可以提高60%
<<左移
  • eg:a<<b表示 把a转为二进制后左移b位(在后面添b个0) ,实际上就是a乘以2的b次方.(程序中乘以2的操作请尽量用左移一位来代替)
实用:
设一个数为n,则:                                    
                                                              ( 结合左移右移操作符)
  •     n&1:结果就是取二进制的最末位。(取某位值)
  •     n | 1:结果就是把二进制位强行变成1。(置某位为1)
  •     n ^1 : 结果就是将二进制末位强制取反。(某位取反)
注:  (n^x)^x=n:可用于简单的加密 。 (^运算的逆运算是它本身)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值