JAVA基础之位运算符

简介: 位运算(位指的是二进制位或者是bit位)计算机中所有的计算到计算机底层中都会变成位运算(就是二进制位的运算)。位运算可以提高程序的效率!学习JDK源码的过程中发现很多地方都用到位运算,比如HashMap在中计算key应该放在那个hash桶位置时就用到了位运算。

位运算(位指的是二进制位或者是bit位)

计算机中所有的计算到计算机底层中都会变成位运算(就是二进制位的运算)。位运算可以提高程序的效率!学习JDK源码的过程中发现很多地方都用到位运算,比如HashMap在中计算key应该放在那个hash桶位置时就用到了位运算。

有符号数

有符号数由两部分组成:

1.符号位(二进制的最左边的一位表示符号位,0表示正数,1表示负数)

2.数值位

3.计算机中存储有符号数据的时候时按照补码形式存进去的。

正数的原码、反码、补码都一样

原码

就是符号位+数值位(数据的绝对值)

反码

就是符号位不变,其它位全部1变0,0变1

补码

在反码的基础上+1生成补码

例如:+7

原码:0b000000000000000000000000000000111

反码:0b000000000000000000000000000000111

补码:0b000000000000000000000000000000111

例如:-7

原码:0b100000000000000000000000000000111

反码:0b111111111111111111111111111111000(除符号位不变,其它1变0,0变1)

补码:0b111111111111111111111111111111001 反码+1生成补码

如何把补码转换成原码

补码-1得到反码,反码再取反得到就是原码(符号位不变)

位运算符号种类

&:按位与

| :按位或

^:按位异或

~ :按位取反

<<: 左移

>>: 右移

>>>:无符号右移

注意:进行位运算的时候所有的操作数全部都是二进制,并且时补码

按位与

规则:两个同为1的时候才为1,属于双目运算符

例如

3的二进制   :00000000000000000000000000000011

4的二进制   :00000000000000000000000000000100

3和4按位与 :00000000000000000000000000000000

按位与后的结果位0

按位或

规则:两个中只要有一个为1,就为1,属于双目运算符

3的二进制   :00000000000000000000000000000011

4的二进制   :00000000000000000000000000000100

3和4按位与 :00000000000000000000000000000111

按位或后的结果位7

按位异或

规则:两个不一样的时候才为1,如果一样就为0,属于双目运算符

按位取反

例如3的二进制:0b00000000000000000000000000000011

取反后的结果:  0b11111111111111111111111111111100   这个是补码

补码-1后获取反码:

补码: 0b1111111111111111111111111111100

-         1

------------------------------------------------

0b1111111111111111111111111111011

反码取反获取原码

0b1000000000000000000000000000100

左移

让操作数乘以2的n次幂,n是移动的位数

格式:

操作数<<往左移动的位数

右移

让操作数除以2的n次幂,n是移动的位数

格式:

操作数>>往右移动的位数

无符号右移

无符号右移也是操作数除以2的n次幂

无符号右移和右移区别:右移操作后,左边会空出位置来,空位置用改操作数的符号位置的数补全;无符号右移,左边空出来的位置全部用补全。

目录
打赏
0
0
0
0
6
分享
相关文章
Java基础之原码,反码,补码,位运算符
Java基础之原码,反码,补码,位运算符
164 0
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
Java语言位运算符详解
Java语言提供了7种位运算符:按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(&lt;&lt;)、带符号右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)。这些运算符主要用于对long、int、short、byte和char类型的数据进行二进制位级别的操作,不能用于double、float和boolean类型。文中详细讲解了每种运算符的规则和应用场景,并指出位运算在实际开发中有重要应用价值,不仅限于面试。
244 2
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
362 2
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
240 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
Java零基础(22) - Java位运算符,了解一下!
【9月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
173 5
java的7种位运算符
java的7种位运算符
173 15

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问