与、或、异或和组合数的一些性质和左移和右移

Posted on 2023-08-09 14:14  jacyoier  阅读(178)  评论(0)    收藏  举报

本博客来自转载!

与、或、异或:

与( & ):两个对应位都为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的幂次的操作

 

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3