本博客来自转载!
与、或、异或:
与( & ):两个对应位都为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的幂次的操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效