10.00_位运算

位运算

基本操作

基本位运算包含了处理二进制位的基本操作。

特点

  1. 时间复杂度:
  2. 空间复杂度:
  3. 适用于二进制位操作和状态压缩

分类

操作 符号 功能描述
& 两位都为1时结果为1
| 至少一位为1时结果为1
异或 ^ 两位不同时结果为1
取反 ~ 0变1,1变0
左移 << 左移n位,末尾补0
右移 >> 右移n位,开头补符号位

位运算技巧

位运算技巧是一些常用的位操作组合。

特点

  1. 时间复杂度:
  2. 空间复杂度:
  3. 适用于快速计算和状态判断

分类

技巧 操作 功能描述
lowbit x & -x 获取最低位的1
清零 x & (x-1) 清除最低位的1
判断2的幂 x & (x-1) == 0 判断是否为2的幂
统计1的个数 内置函数 计算二进制中1的个数

状态压缩

状态压缩是使用二进制位表示状态的技术。

特点

  1. 时间复杂度:与具体问题相关
  2. 空间复杂度:
  3. 适用于状态表示和动态规划

分类

算法 问题描述 特点
集合表示 表示子集状态 位表示元素存在
状态转移 状态间的转换 位运算更新状态
状态枚举 枚举所有状态 位运算生成状态

应用场景对比

基本操作适合:

  1. 二进制位处理
  2. 快速计算
  3. 标志位操作
  4. 权限控制

位运算技巧适合:

  1. 特殊值判断
  2. 状态检测
  3. 快速统计
  4. 优化计算

状态压缩适合:

  1. 集合表示
  2. 状态转移
  3. 组合优化
  4. 动态规划

选择建议

  1. 需要处理二进制位时使用基本操作
  2. 需要快速计算时使用位运算技巧
  3. 需要表示状态时使用状态压缩
  4. 状态数较少时考虑状态压缩
  5. 需要优化性能时考虑位运算
牛客代码笔记-牛栋 文章被收录于专栏

汗牛充栋,学海无涯。<br/> 内含算法知识点讲解,以及牛客题库精选例题。<br/> 学习算法,从牛栋开始。

全部评论

相关推荐

小浪_Coding:个人技能一条测试没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务