Java中的按位& , | , ^ ,>>,<<,~运算

按位运算都是通过转换成二进制进行的运算。

1.按位与(&) 

类似于C语言中的逻辑与,当前位是1则为真,0则为假。&类似为&&(逻辑与)。例如:a&b,必须要两个都是真才会返回1,否则返回0 。(0b表示为二进制)

0b1&0b0 = 0

0b1&0b1 = 1

0b0&0b0 = 0

public class Main{

public static void main(String[] args){

System.out.println(9 & 8); //输出8
/*
9 ->二进制 1001
8 ->二进制 1000
10000&1000 = 1000 ->转换成10进制 -> 8
*/
}

}

2.按位或( | )

类似于C语言中的逻辑或,当前位是1则为真,0则为假。例如:a|b,a,b中只要一个是真(是1)才会返回1,否则返回0 。(0b表示为二进制)

0b1 | 0b0 = 1

0b1 | 0b1 = 1

0b0 | 0b0 = 0

public class Main{

public static void main(String[]args){
System.out.println(9 | 8); //输出9
/*
9 ->二进制 1001
8 ->二进制 1000
1001 |1000 = 1001 ->转换成10进制 -> 9
*/

}

}

3.按位异或(^)

例如:位a和位b, 如果a、b两个不相同,异或后为1。如果a、b都是1或者都是0,异或结果为0。

0b1^0b1 =0

0b1^0b0 =1

0b0^0b0 =0

public class Main{
public static void main(String []args){
System.out.println(8^9); //输出1
/*
9 ->二进制 1001
8 ->二进制 1000
1001 ^1000 = 0001 ->转换成10进制 ->
*/
}

}

4.按位取反(~)

public class Main{
public static void main(String []args){
System.out.println(~9); //输出为-10
/*
9 ->转换为二进制 0….1001 (32位) (….都是0)
按位取反后 1….0110 (….都是1)
变成了负数 ,在计算机为补码表示 转换为真值后为-10
*/
}

}

5.左移

a<<2   二进制状态下的a整体向左移动2个位,缺的位补0

public class Main{
public static void main(String[]args){
System.out.println(8<<3); //输出为64
/*
8转换为二进制为 1000
数向左移3位 1000000 在原来的位缺的加0

*/
}

}

6.右移

a>>2 二进制状态下的a整体向右移动2个位

public class Main{
public static void main(String[]args){
System.out.println(8>>3); //输出为1
/*
8转换为二进制为 1000
数向左移三位后 1
*/
}

}

————下载必看————

1、资源通过互联网渠道公开获取,仅供阅读测试,请在下载后24小时内删除,谢谢合作!
2、若版权方认为本站侵权,请联系发邮件至(rsstime@qq.com)处理。
3、本站解压密码统一为:yudouyudou

时光屋 » Java中的按位& , | , ^ ,>>,<<,~运算

发表评论

至臻视听_发烧收藏

会员介绍 常见问题