一 数学基础
在离散数学 高考数学里我们知道了逻辑关系,如 “与”“ 或 ”“非”,而在计算机中,用1代表真,0代表假
1 “与”(and) &
需要两个数都为真,才为真
位运算表示为
1 1 1 |
---|
1 0 0 |
ans=1 0 0 |
2 “或”(or) |
有一个为真,则为真
位运算表示为
1 1 1 |
---|
1 0 0 |
ans=1 1 1 |
3 “非”(not) ~
也就是按位取反,真变假,假变真
1 1 1 |
---|
0 0 0 |
在计算机中只有这种逻辑运算
4 “异或”
只要两个真假不一,则为真
1 1 1 |
---|
1 0 0 |
ans=0 1 1 |
二 左移<< 右移>>
左移就是对某个数左移x相当于乘以
2
n
2^n
2n
而右移相当于除以
2
n
2^n
2n
而在二进制中
1<<3 即1000
通过x&(1<<3)可以判断在x二进制的第四位是否为1
x&((1<<n1-1)-(1<<n2-1))可以对x进行取位操作