【算法学习】编程中的位运算

位运算

位运算是直接对二进制的每一位进行逻辑操作的运算方式

用途:位运算一般用于考察异或的性质、状态压缩、与位运算相关的特殊数据结构、构造题等。

基本的位运算共 6 种,分别为按位与、按位或、按位异或、按位取反、左移和右移。

按位与 &

两个数字与运算的结果不会变小

按位或 |

两个数字或运算的结果不会变小

异或 ^

两个数字进行异或运算,结果可能变大,也可能变小,也可能不变。

异或的性质

// 交换律
x ^ y = y ^ x
// 结合律
x ^ (y ^ z) = (x ^ y) ^ z
// 自反性
x ^ x = 0
// 零元素
x ^ 0 = x
// 逆运算
如果x ^ y = z,则有 z ^ y = x (两边同时异或 y)

按位取反

常用于无符号数,避免符号位取反造成干扰

位运算技巧

判断数字奇偶性

表达式:x&1

如果结果位1说明是奇数,结果为0说明是偶数

获取二进制的某一位

表达式:x >> i & 1

结果必然为 0 或 1,表示x中第 i 位的值

修改二进制某一位

修改二进制某一位为1

表达式:x | (1 << i)

将x的第i位或上1,则x第i位变为1,其他位不受影响

修改二进制某一位为0

表达式:x & ~(1 << i)

其中~是按位非

判断一个数是否是2的幂次

表达式:x & (x - 1)

如果是2的幂次方,则其二进制中只有一个 1, x - 1就会有很多连续的1并且与x的1没有交集,两者与运算一定为0,其他情况必然不为 0 .

获取二进制中最低位的1

表达式 :lowbit(x) = x & -x

如果x=010010,则lowbit(x) = 000010

常用于数据结构树状数组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659391.shtml

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

相关文章

华为数通方向HCIP-DataCom H12-831题库(填空题)

第01题 通过执行(Port-isolate mode all )命今,可以使同一VLAN的不同端口用户二三层彻底隔离无法通信。 (请使用英文小写字母将命令补全,且命令不能缩写) port-isolate mode l2 配置端口隔离模式为二层隔离三层互通;port-isolate mode all 配置端口隔离模式为二层三层都隔离…

Hadoop3.x基础(2)- HDFS

来源&#xff1a;B站尚硅谷 目录 HDFS概述HDFS产出背景及定义HDFS优缺点HDFS组成架构HDFS文件块大小&#xff08;面试重点&#xff09; HDFS的Shell操作&#xff08;开发重点&#xff09;基本语法命令大全常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作HDFS的API案例…

springboot 怎么设置局域网访问

如何配置Spring Boot应用以实现局域网访问 在开发一个Spring Boot应用时&#xff0c;我们通常会通过localhost来访问和测试我们的应用。但是&#xff0c;当我们想要在局域网中分享我们的应用&#xff0c;供其他设备访问时&#xff0c;仅仅使用localhost是不够的。本文将引导你…

Linux系统卸载重装JDK

CentOS 系统是开发者常用的 Linux 操作系统&#xff0c;安装它时会默认安装自带的旧版本的 OpenJDK&#xff0c;但在开发者平时开发 Java 项目时还是需要完整的 JDK&#xff0c;所以我们部署 CentOS 开发环境时&#xff0c;需要先卸载系统自带的 OpenJDK&#xff0c;再重新安装…

汽车销量可视化分析

目录 一.分析的背景、目的、意义 1、背景 2、目的 3、意义 二.数据来源 三.图表分析 1、汽车品牌销量柱状图 2、中国汽车销量柱状图 3、汽车销量前10排行柱状图 4、汽车厂商销量折线图 ​编辑5、汽车销量词云图 6、汽车车型销量 7、汽车价格分布雷达图 8、汽车分…

免费的ChatGPT网站(7个)

还在为找免费的chatGPT网站或者应用而烦恼吗&#xff1f;博主归纳总结了7个国内非常好用&#xff0c;而且免费的chatGPT网站&#xff0c;AI语言大模型&#xff0c;我们都来接触一下吧。 免费&#xff01;免费&#xff01;免费&#xff01;...&#xff0c;建议收藏保存。 1&…

JSON字符串作为入参时,转换为具体对象

一个常见的开发场景&#xff1a; postman封装了一个json串&#xff0c;可能json中有对象&#xff0c;也有数组 传给后台时&#xff0c;后台通常会用通过Map接收 这时候如果入参包含一些对象或数组&#xff0c;从入参对象拿到的是Object&#xff0c;此时要转换为一些自定义实…

深入浅出HBase:一文理解HBase基础概念(列存储、时间戳、key-value)、架构特点以及适合的使用场景

文章目录 一. HBase 数据模型1. 行存储与列式存储1.1. 行存储1.2. 列存储 2. HBase 数据模型2.1. 模型概览2.2. 列与列族2.3. 时间戳&#xff1a;定义数据版本2.4. HBase的Key-Value 三. HBase架构1. HBase读写流程简述2. HRegionServer内部内部数据流转&#xff1a;HRegion &l…

Web前端入门 - HTML JavaScript Vue

ps&#xff1a;刚开始学习web前端开发&#xff0c;有什么不正确、不标准的内容&#xff0c;欢迎大家指出~ Web简介 90年代初期&#xff0c;Web1.0&#xff0c;静态页面&#xff0c;不和服务器交互&#xff0c;网页三剑客指Dreamweaver、Fireworks、Flash2000年代中期&#xf…

MySQL事务隔离级别

什么是事务? 事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元&#xff0c;这个转账会涉及到两个关键操作就是&#xff1a;将小明的余额减少1000元&#xff0c;将小红的余额…

如何将Mac连接到以太网?这里有详细步骤

在Wi-Fi成为最流行、最简单的互联网连接方式之前&#xff0c;每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。 如何将Mac连接到以太网 如果你的Mac有以太网端口&#xff0c;则需要以太网电缆&#xff1a; 1、将电缆一端接入互联网端口&#xff08;可以在墙…

正则表达式补充以及sed

正则表达式&#xff1a; 下划线算 在单词里面 解释一下过程&#xff1a; 在第二行hello world当中&#xff0c;hello中的h 与后面第一个h相匹配&#xff0c;所以hello中的ello可以和abcde匹配 在world中&#xff0c;w先匹配h匹配不上&#xff0c;则在看0&#xff0c;r&#…

前端开发基于Qunee绘制网络拓扑图总结-02

1、渲染连线颜色 *关键函数一定要调用&#xff1a;graph.invalidate()* graph.forEach(function(element) {if (element instanceof Q.Edge) {let arr [#549BF1, #AA8A6E, #8F54F1,#5A70BC,#BCBF5C, #BC5A76, #67B4D4,#B4C9EF, #676AD4, #A86EAA,#5CBF7F, #EFB4B4];let inde…

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测

回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测 目录 回归预测 | Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向量机多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSSVM冠豪猪算法优化最小二乘支持向…

使用 Python 进行自然语言处理第 3 部分:使用 Python 进行文本预处理

一、说明 文本预处理涉及许多将文本转换为干净格式的任务&#xff0c;以供进一步处理或与机器学习模型一起使用。预处理文本所需的具体步骤取决于具体数据和您手头的自然语言处理任务。 常见的预处理任务包括&#xff1a; 文本规范化——将文本转换为标准表示形式&#xff0c;…

龙哥风向标20230815 GPT拆解

斯坦福超人前传开源&#xff0c;探索AI特工在数字世界的生活 盈利点&#xff1a;利用斯坦福超人前传开源的商机&#xff0c;可以开发基于AI特工在数字世界生活的虚拟游戏&#xff0c;吸引玩家体验多智能体涌现的规模和无限新可能性&#xff0c;从而盈利。 操作步骤&#xff1…

客户端熔断器基于golang Grpc具体实现(Google SRE客户端熔断器)

目录 前言 一、什么是Google SRE 二、Google SRE 熔断器的工作流程&#xff1a; 三、Google SRE GRPC 代码实现 四、测试用例 大家可以关注个人博客&#xff1a;xingxing – Web Developer from Somewhere 有关后端问题探讨 前言 当某个用户超过资源配额时&#xff0c…

JUC并发编程-各种锁:公平锁,非公平锁、可重入锁、自旋锁、偏向锁、轻量级锁、重量级锁、锁升级顺序、死锁、死锁排查

21. 各种锁的理解 1&#xff09;公平锁&#xff0c;非公平锁 在Java中&#xff0c;锁&#xff08;Lock&#xff09;是一种用于多线程同步的机制。公平锁和非公平锁是两种不同类型的锁。 公平锁&#xff08;Fair Lock&#xff09;是指线程获取锁的顺序与线程请求锁的顺序保持…

能耗在线监测系统在节能管理中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;开展能耗在线监测系统建设&#xff0c;对加强政府部门和企业节能管理中的应用前景&#xff0c;分析系统在能源消费预测分析、能效对标、节能监察、能源精细化…

深入理解Java中的死锁:条件与避免策略

目录 1. 引言 2. 死锁的产生条件 2.1 互斥条件 2.2 请求与保持条件 2.3 不剥夺条件 2.4 环路等待条件 3. 示例&#xff1a;Java中的死锁 4. 如何避免死锁 4.1 加锁顺序 4.2 使用tryLock() 4.3 使用Lock和Condition 5. 结论 1. 引言 在多线程编程中&#xff0c;死锁…