Java中的位运算
Posted Ferron Zhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的位运算相关的知识,希望对你有一定的参考价值。
文章目录
1、按位运算符
1.1、按位与(&)
运算规则:0&0=0;0&1=0;1&0=0;1&1=1;简单来说,就是两数都为1则为1,否则为0。
再举个例子,8&9=00001000&00001001=00001000=8。
如果有负数,则负数按其补码计算,例如:
-8的补码为11111000,-8&9=11111000&00001001=00001000=8
1.2、按位或(|)
运算规则:0|0=0;0|1=1;1|0=1;1|1=1;简单来说,就是两数都为0则为0,否则为1。
再举个例子,8&9=00001000|00001001=00001001=9。
如果有负数,则负数按其补码计算。
1.3、按位异或(^)
运算规则:0|0=0;0|1=1;1|0=1;1|1=0;简单来说,就是两数相同则为0,不相同为1。
再举个例子,8&9=00001000|00001001=00000001=1。
如果有负数,则负数按其补码计算。
1.4、取反(~)
运算规则:0=1;1=0;
8&~1=00001000&11111110=00001000=8
2、移位运算符
2.1、左移运算符(<<)
左移运算符的意思就是将一个数的二进制数左移n位,例如10<<2就代表将10的二进制数左移两位,右位补0,10的二进制为00001010,左移后就是00101000,结果为40,相当于10×2×2。即每左移一位,相当于原10进制数乘2。
2.2、右移运算符(>>)
右移运算符的意思就是将一个数的二进制数右移n位,例如60>>2就代表将60的二进制数右移两位,正数左位补0,负数左位补1,右边丢弃,60的二进制为00111100,左移后就是00001111,结果为15,相当于10÷2÷2。即每右移一位,相当于原10进制数除2。
2.3、无符号右移运算符(>>>)
无符号右移运算符的意思跟右移运算符差不多,唯一区别就是无符号右移运算法不区分正负数,无论如果都是左位补0,右位丢弃。
以上是关于Java中的位运算的主要内容,如果未能解决你的问题,请参考以下文章