栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剖析Java中的位运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剖析Java中的位运算符

位运算是直接对整数的二进制进行的运算

运算符运算范例
<<左移3 << 2 = 12 --> 3*2*2=12
>>右移3 >> 1 = 1 --> 3/2=1
>>>无符号右移3 >>> 1 = 1 --> 3/2=1
&与运算6 & 3 = 2
|或运算6
^异或运算6 ^ 3 = 5
~取反运算~6 = -7

位运算符的细节

运算符细节
<<空位补0,被移除的高位丢弃,空缺位补0。
>>被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>>被移位二进制最高位无论是0或者是1,空缺位都用0补。
&二进制位进行&运算,只有1&1时结果是1,否则是0;
|二进制位进行|运算,只有0|0时结果是0,否则是1;
^相同二进制位进行 ^ 运算,结果是0;1 ^ 1=0 , 0 ^ 0=0不相同二进制位 ^ 运算结果是1。1 ^ 0=1 , 0 ^ 1=1
~正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反

以下三个运算均满足结合律,交换律
与(&)运算的特点:有0为0,全1为1

与运算&。与运算有以下性质。

1.一个数&1的结果就是取二进制的最末位,这可以用来判断一个数的奇偶性,二进制的最末位位0表示该数位偶数,最末位为1表示该数为奇数

0001 0101 & 0000 0001 = 0000 001

2.置位归零:使一个二进制数中的某一位/某几位归零,而其余数位不受影响。将欲归零的数位应置0,其余数位置1

0001 0101 & 1111 1111 = 0001 0101

3.巧用取模:因为位运算比%(取模)运算快,所以可对一下代码进行优化

x=x%2;
// 可以进行优化
x=x&1;

4.取一个数中指定位:举例:取1010 1110的低四位,则可通过以下运算得到

1010 1110 & 0000 1111 = 0000 1110

或(|)运算的特点:有1为1,全0为0

或运算|。或运算有以下性质。

1.对一个数据的某些位置 1,将1010 0000的低四位置1

1010 0000 | 0000 1111 = 1010 1110

异或(^)运算的特点:同为0,异为1

异或运算⊕。异或运算有以下性质。

1.任何数和0做异或运算,结果仍然是原来的数,即 a⊕ 0=a。
2.任何数和其自身做异或运算,结果是0,即 a⊕ a=0。
3.异或运算满足交换律和结合律,即 a⊕b⊕a = b⊕a⊕a = b⊕(a⊕a)=b⊕ 0=b。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号