java位运算符(与或非异或位移)


    学习java后,经常在位运算符上犯错误。今天在看HashMap源码的hash算法时又懵逼了。所以,今天在这里记录一下这些位运算符号的用法。


1. 与(&)
    当两个操作数中位都为1时,则为1,否则为0。
/**
 * 与运算符示例
 * @author SHT
 *
 */
public class VersusDemo {
	
	public static void main(String[] args) {
		//二进制表示形式为0011
		int a = 3;
		//二进制表示形式为0101
		int b = 5;
		//		0011
		//		0101
		//结果	0001
		int c = a&b;
		System.out.println("a&b="+c);
		System.out.println("a&b的二进制表示形式为"+Integer.toBinaryString(c));
	}
}
结果为
a&b=1
a&b的二进制表示形式为1

2. 或(|)
    当两个操作数中的位有一个为1时,则为1,否则为0。
/**
 * 或运算符示例
 * @author SHT
 *
 */
public class OrDemo {
	
	public static void main(String[] args) {
		//二进制表示形式为0011
		int a = 3;
		//二进制表示形式为0101
		int b = 5;
		//		0011
		//		0101
		//结果	0111
		int c = a|b;
		System.out.println("a|b="+c);
		System.out.println("a|b的二进制表示形式为"+Integer.toBinaryString(c));
	}
}
结果为
a|b=7
a|b的二进制表示形式为111

3. 非(~)
    当操作数中位为1时,结果为0,否则为1。
/**
 * 非运算符示例
 * @author SHT
 *
 */
public class NotDemo {
	
	public static void main(String[] args) {
		//二进制表示形式为0000 0000 0000 0000 0000 0000 0000 0011
		int a = 3;
		//结果	1111 1111 1111 1111 1111 1111 1111 1100
		int c = ~a;
		System.out.println("~a="+c);
		System.out.println("~a的二进制表示形式为"+Integer.toBinaryString(c));
	}
}
结果为
~a=-4
~a的二进制表示形式为11111111111111111111111111111100

4. 异或(^)
    当两个操作数中的位相同时为0,不同为1。
/**
 * 异或运算符示例
 * @author SHT
 *
 */
public class ExclusiveOrDemo {
	
	public static void main(String[] args) {
		//二进制表示形式为0011
		int a = 3;
		//二进制表示形式为0101
		int b = 5;
		//		0011
		//		0101
		//结果	0110
		int c = a^b;
		System.out.println("a^b="+c);
		System.out.println("a^b的二进制表示形式为"+Integer.toBinaryString(c));
	}
}
结果为
a^b=6
a^b的二进制表示形式为110

5. 位移运算符
(1)左移运算符(<<):右边补0。
(2)右移运算符(>>):左边补0(除符号位)
(3)无符号右移运算符(>>>):左边补0。
/**
 * 位移运算符
 * @author SHT
 *
 */
public class YunSuanFuDemo {
	
	public static void main(String[] args) {
		int n = 10;
		printInfo(n);
		
		n = n << 1;
		printInfo(n);
		
		n = n >> 1;
		printInfo(n);
		
		n = n >>>1;
		printInfo(n);
	}
	
	public static void printInfo(int n) {
		System.out.println(n+"的二进制表示形式:"+Integer.toBinaryString(n));
	}
}
结果为
10的二进制表示形式:1010
20的二进制表示形式:10100
10的二进制表示形式:1010
5的二进制表示形式:101
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值