JAVA--位运算

<<

<<(左移位运算):其实就是乘以2的移动的位数次幂。 例如 3<<2 相当于3*2(2)=12

<<(左移位运算) 后在空出来的最低位位置补0

>>

>>(右移位运算):其实就是除以2的移动的位数次幂。例如 6>>2 相当于6/2(2)=1 [整数相除取整]

>>(右移位运算) 后在空出来的最高位位置补什么由原有数据的最高值而定:

    如果最高位为0,右移后,用0补空位。   

   如果最高位为1,右移后,用1补空位。

>>>

>>> (无符号右移):其实就是除以2的移动的位数次幂。例如 6>>>2 相当于6/2(2)=1 [整数相除取整]

>>>(无符号右移):无论最高位是什么,右移后,都用0补。

&

&(与运算): 先把数字转换为它相对应的二进制数,0视为false,1视为true,进行逻辑与(&)的运算。

true (1)& true(1) =true(1);

true(1) & false (0)=false (0);

false(0) & true(1) =false(0) ;

false(0) & false(0) =false (0);

总结:只要两边的boolean表达式结果,有一个位false(0),那么结果就是false(0),只有两边都为true(1),结果为true(1)。

|

|(或运算): 先把数字转换为它相对应的二进制数,0视为false,1视为true,进行逻辑或(|)的运算。 

true (1)| true(1) =true(1);

true(1) | false(0) =true (1) ;

false(0) | true (1)=true (1);

false(0) | false(0)=false (0);

总结:只要两边的boolean表达式结果,有一个位true(1) ,那么结果就是true(1) ,只有两边都为false(0),结果为false(0)。

^

^(异或运算):先把数字转换为它相对应的二进制数,0视为false,1视为true,进行逻辑异或(^)的运算。 

true(1) ^ true(1) =false(0) ;

true(1)^ false(0) =true(1)  ;

false(0) ^ true(1) =true(1) ;

false(0) ^ false(0) =false(0) ;

总结:两边相同结果false(0),两边不同结果true(1)。

用途:一个数异或同一个数两次,结果还是它本身。(可用于加密和解密)

例如:7^4^4=7;

~

~(反码):先把数字转换为它相对应的二进制数,进行 取反

猜你喜欢

转载自blog.csdn.net/Xin6Yang/article/details/88371767
今日推荐