当前位置: 首页 > news >正文

「算法」常见位运算总结

位运算符

  • 异或
    按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作)
    在这里插入图片描述

异或的运算律
①a ^ 0 = a
②a ^ a = 0
③a ^ b ^ c = a ^ ( b ^ c )

  • 有符号右移>>
    将一个数的所有位向右移动指定的位数,最高位用符号位填充
  • 无符号右移>>>
    也是右移,不过最高位用0填充

基操

背景:给一个数 n,我们设它二进制表示的最低位的下标是 0

  • 确定 n 二进制表示的第 x 位是0还是1
    将 n 右移 x 位,然后和 1 按位与,若为 0,则第 x 位为0;反之为 1

  • 将 n 的第 x 位修改成 1
    将 1 左移 x 位,然后和 n 按位或

  • 将 n 的第 x 位修改成 0
    将 1 左移 x 位,然后和 n 按位异或

lowbit:提取一个数二进制中最右侧的1

这是一个很巧妙的操作,本质是将最右侧的 1 左边的区域全变成相反
操作:n ^ (-n)

去除最右侧的1

操作:n & ( n - 1 )
本质:将最右侧的1右侧的区域(包括1)全部变成相反

http://www.lryc.cn/news/308960.html

相关文章:

  • 【C++初识】语句
  • Python线性代数傅里叶分析和动态系统模拟分析之一
  • mysql插入GEOMETRY相关字段类型(point,linestring等)
  • vue3学习 【5】watch的使用
  • PyTorch深度学习快速入门
  • 种花
  • Android Shadow插件化框架分析与集成(二)
  • Go 与 Rust:导航编程语言景观
  • 包管理工具之npm也慌了?
  • mobile app 安全扫描工具MobSF了解下
  • Gophish+EwoMail 自建钓鱼服务器
  • Dockerfile(5) - CMD 指令详解
  • 使用 Gradle 版本目录进行依赖管理 - Android
  • CS_上线三层跨网段机器(完整过程还原)
  • crpto 的AES算法解密为空
  • 13.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-如果没有工具就创造工具
  • 配置artifactory的反向代理和域名访问
  • python爬虫之协程知识点记录
  • 安卓开发1- android stdio环境搭建
  • qt QRadioButton 及QButtonGroup 使用
  • 【LeetCode-178】最长重复子串(动归)
  • 1、jQuery介绍、css()、选择器、事件、动画
  • ArcEngine 调用GP工具时,出现C++ R6034错误
  • windows下基于docker-desktop 安装 mysql 5.7
  • 什么是Rust 语言
  • 2024年四川媒体新闻发布渠道,媒体邀约资源表
  • 14:00面试,14:07就出来了,问的问题过于变态了。。。
  • 利用 Python 抓取数据探索汽车市场趋势
  • 新闻网站封锁AI爬虫 AI与新闻媒体博弈继续
  • Python Web开发记录 Day5:jQuery(JavaScript库)