编程语言
首页 > 编程语言> > Java的位运算符——与(&)、非(~)、或(|)、异或(^) 及 移位运算符

Java的位运算符——与(&)、非(~)、或(|)、异或(^) 及 移位运算符

作者:互联网

位运算符

位运算符主要针对二进制,它包括了:“与(&)”、“非(~)”、“或(|)”、“异或(^)”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。

1.与运算符   &
与运算符用符号“&”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,

 

2.或运算符   |
或运算符用符号“|”表示,其运算规律如下:
两个操作数中位只要有一个为1,那么结果就是1,否则就为0

 

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

二进制数其补码如果位为0,结果是1,如果位为1,结果是0

 

4.异或运算符  ^
异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。

 

移位运算符

移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

 

运算符 含义 例子
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) x<<3
>> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. x>>3
>>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. x>>>3

 

eg:

以int类型的6297为例,代码如下:

 

public class TestMeng {

	public static void main(String[] args) {
		System.out.println(Integer.toBinaryString(6297));
		System.out.println(Integer.toBinaryString(-6297));
		System.out.println(Integer.toBinaryString(6297 >> 5));
		System.out.println(Integer.toBinaryString(-6297 >> 5));
		System.out.println(Integer.toBinaryString(6297 >>> 5));
		System.out.println(Integer.toBinaryString(-6297 >>> 5));
		System.out.println(Integer.toBinaryString(6297 << 5));
		System.out.println(Integer.toBinaryString(-6297 << 5));
	}
}

 

1100010011001
11111111111111111110011101100111
11000100
11111111111111111111111100111011
11000100
111111111111111111100111011
110001001100100000
11111111111111001110110011100000

注:x<<y 相当于 x * 2^y(2的y次方) ;x>>y相当于x / 2^y  (2的y次方)
    从计算速度上讲,移位运算要比算术运算快。
    如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。

标签:Java,6297,System,运算符,异或,toBinaryString,println,Integer
来源: https://blog.csdn.net/Hurricane_m/article/details/89502235