300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java位运算符和移位运算符详解

Java位运算符和移位运算符详解

时间:2019-10-12 06:21:10

相关推荐

Java位运算符和移位运算符详解

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。

移位运算符包括,“左移运算符”,“有符号右移运算符”、“无符号右移运算符”。

位运算

异或 ^

异或运算符是用符号“^”表示的,其运算规律是:

两个操作数的位中,相同则结 果为0,不同则结果为1

简单实例

/*** @function: 异或位运算*/@Testpublic void test(){int a=33;int b=32;System.out.println(a^b);}

输出结果:1

因为33转换成二进制是100001,32转换成二进制是100000,异或结果是000001

拓展:异或的应用

第一:简单的加密解密

因为a ^ b ^ b = a

第二:高效率交换两个整数

/*** @function: 使用异或,高效率交换两个整数*/@Testpublic void test2(){int a=100;int b=88;//使用异或交换a=a^b;b=a^b;a=b^a;System.out.println(a);System.out.println(b);}

运行结果:

其实两个应用道理是相同的,一个数异或另一个数两次得到的还是他本身

与 &

与运算符用符号“&”表示,其使用规律如下:

两个操作数中位都为1,结果才为1,否则结果为0

简单实例

/*** @function: 与位运算*/@Testpublic void test3(){int a=33;int b=32;System.out.println(a&b);}

运行结果:32

因为因为33转换成二进制是100001,32转换成二进制是100000,与结果是100000

或 |

或运算符用符号“|”表示,其运算规律如下:

两个位只要有一个为1,那么结果就是1,否则就为0

简单实例

/*** @function: 或位运算*/@Testpublic void test4(){int a=33;int b=32;System.out.println(a|b);}

运行结果:33

因为因为33转换成二进制是100001,32转换成二进制是100000,或结果是100001

非 ~

非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0

简单实例

/*** @function: 非位运算*/@Testpublic void test5(){int a=33;int b=~a;System.out.println(b);System.out.println(Integer.toBinaryString(b));}

运行结果:

移位运算

移位运算操作的就是二进制的位

简单的,<<n 左移相当于乘2的n次方,>>n(>>>n) 右移相当于除2的n次方,然后这个>>>与>>的区别是对负数的处理上

简单示例

/*** @function: 移位运算*/@Testpublic void test6() {int a = 32;int b = -32;System.out.println(Integer.toBinaryString(a));System.out.println(Integer.toBinaryString(b));System.out.println(Integer.toBinaryString(a >> 2));System.out.println(Integer.toBinaryString(b >> 2));System.out.println(Integer.toBinaryString(a >>> 2));System.out.println(Integer.toBinaryString(b >>> 2));System.out.println(Integer.toBinaryString(a << 2));System.out.println(Integer.toBinaryString(b << 2));}

运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。