【算法】常见位运算总结

目录

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)
相关推荐
是小蟹呀^3 分钟前
Java抽象类详解:从入门到精通
java·抽象类
IT 行者6 分钟前
Spring Boot 集成 JavaMail 163邮箱配置详解
java·spring boot·后端
lzhdim12 分钟前
SQL 入门 7:SQL 聚合与分组:函数、GROUP BY 与 ROLLUP
java·服务器·数据库·sql·mysql
弹简特17 分钟前
【JavaEE】Mybatis实现分页查询功能
java·java-ee·mybatis
烤麻辣烫20 分钟前
I/O流 基础流
java·开发语言·学习·intellij-idea
Jasonakeke20 分钟前
我的编程来时路
java·c++·python
Yvonne爱编码25 分钟前
Java 中的 hashCode () 与 equals () 核心原理、契约规范、重写实践与面试全解
java·开发语言·数据结构·python·hash
gelald27 分钟前
JVM - 运行时内存模型
java·jvm·后端
老虎062728 分钟前
Java基础面试题(08)—Java(集合—HashMap的使用和实现原理红黑树)
java·开发语言
左左右右左右摇晃1 小时前
Java笔记——JMM
java·后端·spring