您的位置:首页 > 编程语言 > Java开发

Java位运算符介绍

2015-12-09 11:06 609 查看

位运算符

位运算符主要是针对二进制的,它包括了”&“(按位与)、”|“(按位或)、”~“(按位非)、”^“(按位异或)四种。

& 按位与

两个二进制按位比对,若同位上都是1,才返回1,否则返回0,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是1(0001)。示例如下:

System.out.println(1 & 3); // 1


|  按位或

两个二进制按位比对,若同位上都是0,才返回0,否则返回1,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是3(0011)。示例如下:

System.out.println(1 | 3); // 3


~ 按位非

一个二进制进行取反,若位上为1,则返回0,否则返回1,最后返回新的二级制。以3(0011)为例,返回的结果是-4(1100)。示例如下:

System.out.println(~3); // -4


^ 按位异或

两个二进制按位比对,若同位上都是相同的数字(0或1),才返回0,否则返回1,最后返回新的二进制,以1(0001)和3(0011)为例,返回的结果是2(0010)。示例如下:

System.out.println(1 ^ 3); // 2

二进制除了位运算符还有移位运算符。

移位运算符

移位运算符包括了”<<“(左移)、”>>“(带符号的右移)、”>>>“(无符号的右移)。在移位运算时,byte、short和char类型移位后的结果会变成int类型,对byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移位long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。

<< 左移运算符

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。以3(0000 0011)为例,左移2位,返回的结果为(12)0000 1100。示例:

System.out.println(3 << 2); // 12
System.out.println(3 << 34); // 12

>> 带符号的右移

按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:

System.out.println(3 >> 1); // 1
System.out.println(3 >> 33); // 1
System.out.println(Integer.toBinaryString(-3)); // 11111111111111111111111111111101
System.out.println(Integer.toBinaryString(-3 >> 1)); // 11111111111111111111111111111110
System.out.println(-3 >> 1); // -2
System.out.println(-3 >> 34); // -1
>>> 无符号的右移
按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补零。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:

System.out.println(3 >>> 1); // 1
System.out.println(3 >>> 34); // 0
System.out.println(Integer.toBinaryString(-3>>>1)); // 01111111111111111111111111111110
System.out.println(-3 >>> 1); // 2147483646
System.out.println(-3 >>> 34); // 1073741823
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: