> 文档中心 > 算法模版:位运算【沈七】

算法模版:位运算【沈七】

算法模版:位运算

  • 前言
    • &
    • |
    • ^
    • ~
    • <<
    • >>
  • 应用
    • 1.判断奇偶
    • 2.交换两个数
    • 3.求n的第k位数字:
    • 4.返回n的最后一位1:

前言

唤我沈七就好啦。

&

按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

|

按位或两个相应的二进制位中只要有一个为1,该位的结果值为1

^

按位异或若参加运算的两个二进制位值相同则为0,否则为1

~

取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1

<<

左移用来将一个数的各二进制位全部左移N位,右补0

>>

右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0

应用

1.判断奇偶

只需要判断二进制位末尾数字
如果是 1 的话,代表是奇数,如果是 0 则代表是偶数,

if(n & 1 == 1){    // n 是个奇数。}

2.交换两个数

x = x ^ y // (1)
y = x ^ y // (2)
x = x ^ y // (3)

3.求n的第k位数字:

n >> k & 1

4.返回n的最后一位1:

lowbit(n) = n & -n