「算法」常见位运算总结

位运算符

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

异或的运算律
①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.hqwc.cn/news/502036.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java+springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

leetcode--接雨水(双指针法,动态规划,单调栈)

目录 方法一:双指针法 方法二:动态规划 方法三:单调栈 42. 接雨水 - 力扣(LeetCode) 黑色的是柱子,蓝色的是雨水,我们先来观察一下雨水的分布情况: 雨水落在凹槽之间,在一个凹槽的…

HotFix原理学习

原文链接:Unity 游戏用XLua的HotFix实现热更原理揭秘-CSDN博客 本文通过对XLua的HoxFix使用原理的研究揭示出来这样的一套方法。这个方法的 第一步:通过对C#的类与函数设置Hotfix标签。来标识需要支持热更的类和函数。第二步:生成函数连接器…

csv大数值不显示E科学计算法的解决方案

背景: 从其他系统获取到一个商品mid的大的数值的csv文件,然后使用excel打开的时候有各种问题,本文记录下怎么正确的展示这个大数值的csv文件 正确展示数值精度: 数值展示错误 正确展示的方法: 1使用文本编辑器比如…

【力扣白嫖日记】585.2016年的投资

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 585.2016年的投资 表:Person 列名类型pidinttiv_2015floattiv_2016floatlatfloatlonfloat pid …

文献速递:帕金森的疾病分享--多模态机器学习预测帕金森病

文献速递:帕金森的疾病分享–多模态机器学习预测帕金森病 Title 题目 Multi-modality machine learning predicting Parkinson’s disease 多模态机器学习预测帕金森病 01 文献速递介绍 对于渐进性神经退行性疾病,早期和准确的诊断是有效开发和使…

【C++从0到王者】第四十六站:图的深度优先与广度优先

文章目录 一、图的遍历二、广度优先遍历1.思想2.算法实现3.六度好友 三、深度优先遍历1.思想2.代码实现 四、其他问题 一、图的遍历 对于图而言,我们的遍历一般是遍历顶点,而不是边,因为边的遍历是比较简单的,就是邻接矩阵或者邻接…

qt 5.15版本安装

1.qt5.15版本安装 2.安装慢时,切换到清华镜像源:.\qt-unified-windows-x64-online.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/ 3.没有qt 5.15版本在旁边进行筛选,只选archive

项目-SERVER模块-Buffer模块

Buffer模块 一、Buffer模块是什么?实现思想是什么?二、代码实现如何设计:1.成员变量:2.构造函数:3.获取地址和空间大小4.读写偏移向后移动5.扩容函数6.写入函数7.读取函数8.获取地址和空间大小9.获取地址和空间大小10.…

Oracle 11g升级19c 后部分查询功能很慢

*Oracle 11g升级19c 后部分查询功能很慢 今天生产突然有个查询非常慢,日志显示执行了50秒左右,但是从日志中拿出SQL在PLSQL执行,发现用时不到1秒,查看SQL,怀疑是下面几种原因导致 1、使用函数不当 UNIT.UNIT_CODE LIKE CONCAT(‘…

Python小白必学的面向对象

我们已经知道在Python中“一切皆对象”,每个对象都有特定的类型,现在让我们来尝试创建自己的类型——这需要使用class关键字来定义新的“类”(Class),类是用来生成对象的“模板”,对象则是其所属类的“实例…

Laravel - API 项目适用的图片验证码

1. 安装 gregwar/captcha 图片验证码接口的流程是: 生成图片验证码 生成随机的 key,将验证码文本存入缓存。 返回随机的 key,以及验证码图片 # 不限于 laravel 普通 php 项目也可以使用额 $ composer require gregwar/captcha2. 开发接口 …