本博客来自转载!
与、或、异或:
与( & ):两个对应位都为1时才为1
1&1=1,1&0=0,0&1=0,0&0=0。
或( | ):两个对应位至少有一个1就为1
1&1=1,1&0=1,0&1=1,0&0=0。
异或( ^ ):两个对应位恰好只有一个1时才为1
1&1=0,1&0=1,0&1=1,0&0=0。
组合数的一些性质:
性质1:
(n) (n)
( ) = ( )
( m ) ( n-m )
用组合意义证明:选出m 个元素「选」相当于选出n – m 个元素「不
选」。
性质2:
(n) (n-1) (n-1)
c ( ) = c ( ) + c ( )
( m ) ( m-1 ) ( m )
通过组合意义证明:n 个元素选出m 个元素,可以分第一个元素选和不
选两种情况考虑,如果选第一个元素,那么剩下n – 1 个元素要选m – 1个,如
果不选,剩下n – 1 个元素就要选m 个。
性质3:
(n) ( n ) ( n ) ( n )
c ( ) = c ( ) + c ( ) c +.......+c( ) =2的n次方
( 0 ) ( 1 ) ( 2 ) ( n )
证明:可以根据性质2 归纳证明。
也可以通过组合意义证明:这相当于没有限定选出元素的个数。那么每个元素
都有「选」和「不选」两种状态。一共有n 个元素,那么根据乘法原理,就一
共有 种情况。
左移和右移:
左移(<<)表示将二进制表示向左移动。
例如 x << 1 表示 x的二进制表示向左移动一位所得的值。
右移(>>)表示将二进制表示向右移动。
可以发现,左移k 位相当于乘上 ,而右移k 位相当于除以 下取整。
由于位运算速度非常快(远远快于除法),常用位运算代替除 2的幂次的操作
浙公网安备 33010602011771号