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

Posted on   jacyoier  阅读(128)  评论(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的幂次的操作

 

相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效

随笔 - 15, 文章 - 2, 评论 - 0, 阅读 - 967

Copyright © 2025 jacyoier
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示