【算法】常见位运算总结

目录

1.基础位运算

java 复制代码
									0 1 0
									0 1 1
									-----
&:有0就是0							0 1 0
|:有1就是1							0 1 1
^:相同为0,相异为1  /无进位相加 		0 0 1

2. 给一个数n,确定它的二进制表示中的第x位是0还是1

java 复制代码
n: 0 1 1 0 1 0 1 0 0 1
结论:(n >> x) & 1

3.将一个数n的二进制表示的第x位修改成1

java 复制代码
	0 1 1 0 1 0 1 0 0 1
|	0 0 0 0 0 1 0 0 0 0
->	0 1 1 0 1 1 1 0 0 1
结论:n |= (1 << x) 

4.将一个数n的二进制表示的第x位修改成0、

java 复制代码
	0 1 1 0 1 0 1 0 0 1
&	1 1 1 1 0 1 1 1 1 1
->	0 1 1 0 0 1 1 0 0 1
结论:n &= (~(1 << x))

5. 位图的思想

本质:哈希表

6.提取一个数(n)二进制表示中最右侧的1

java 复制代码
	0 1 1 0 1 0 1 0 0 0
~	1 0 0 1 0 1 0 1 1 1
+1	1 0 0 1 0 1 1 0 0 0
& 	0 1 1 0 1 0 1 0 0 0
	0 0 0 0 0 0 1 0 0 0
结论:n & -n

-n:本质就是将最右侧的1,左边的区域全部变成相反

7.干掉一个数(n)二进制表示中最右侧的1

java 复制代码
	0 1 1 0 1 0 1 0 0 
& 	0 1 1 0 1 0 0 1 1 
	0 1 1 0 1 0 0 0 0 
结论:n & (n - 1)

(n - 1):将最右侧的1,右边的区域(包括1)全部变成相反

8.位运算的优先级

能加括号就加括号,最不容易出错!

9.异或(^运算的运算律)

1.a ^ 0 = a
2. a ^ a = 0
3. a ^ b ^ c = a ^ (b ^ c)
相关推荐
秋の花4 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端7 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan14 分钟前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer0818 分钟前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈20 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
WaaTong23 分钟前
《重学Java设计模式》之 单例模式
java·单例模式·设计模式
面试鸭25 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
AaVictory.1 小时前
Android 开发 Java中 list实现 按照时间格式 yyyy-MM-dd HH:mm 顺序
android·java·list