JAVA-SE基础篇-位运算

JAVA-SE基础篇-位运算

/**
 * 位操作符 以及  三元操作符
 * 知识点
 * 1. integer.toBinaryString 表示转化为二进制数
 * 
 * 2.  int k=i<j?99:88;    true k=99;  false k=88;
 * 
 * 3. 位与 1+1=1 1+0=1
 *    或与 1+1=1 1+0=0
 *    异或 相同为 0 不同为1
 * @author Administrator
 *
 */

public class TestBitwiseOperator {
	public static void main(String[] args) {
		
		intBinarySystem();
		System.out.println("#########");
		bitAnd();
		System.out.println("#########");
		bitOr();
		System.out.println("#########");
		bitXOR();
		System.out.println("#########");
		bitTakeInverse();
		System.out.println("#########");
		bitMove();
		System.out.println("#########");
		symbolBit();
		System.out.println("#########");
		threeOperator();
		System.out.println("#########");
		panOperator();
		
	}
	
	private static void intBinarySystem() {

    	//整数二进制转化
    	// integer.toBinaryString 表示转化为二进制数
    	int a=23;
 		String b=(Integer.toBinaryString(a));
 		System.out.println(b);
 		System.out.println(Integer.toBinaryString(a));
 		System.out.println(a+"的二进制表达式是:"+b);
		// TODO Auto-generated method stub
	}
    
    private static void bitAnd() {
    	//位与运算
    	int a=5;
    	int b=6;
//    	1与1=1
//    	1与0=1
//    	0与0=0
    	System.out.println(Integer.toBinaryString(a));
    	System.out.println(Integer.toBinaryString(b));
    	System.out.println(a|b); //位与运算    	
		// TODO Auto-generated method stub
	}
    
    private static void bitOr() {    	
    	//位或运算
    	int a=5;
    	int b=6;
//    	1与1=1
//    	1与0=0
//    	0与0=0
    	System.out.println(Integer.toBinaryString(a));
    	System.out.println(Integer.toBinaryString(b));
    	System.out.println(a&b); //位或运算
		// TODO Auto-generated method stub
	}
       
    private static void bitXOR() {
    	//异或运算
    	//任何数和自己异或 都是0
    	//任何数和0异或 都等于自己
    	int a=5;
    	int b=6;
//    	相同为0
//    	不同为1
    	System.out.println(Integer.toBinaryString(a));
    	System.out.println(Integer.toBinaryString(b));
    	System.out.println(a^b); //异或运算
		// TODO Auto-generated method stub
    }
    
    private static void bitTakeInverse() {
    	//取反运算
    	int a=5;    	
    	System.out.println(Integer.toBinaryString(a));
    	System.out.println(~a); //取反运算
		// TODO Auto-generated method stub
    }
    
    private static void bitMove() {
    	//左移    扩大为原来的二倍
    	//右移    缩小位原来的二分之一
    	int a=6;
    	//6的二进制是110    	
    	System.out.println(Integer.toBinaryString(a));	
    	System.out.println(a<<1); //左移一位 1100    	
    	System.out.println(a>>1); //右移一位 11
		// TODO Auto-generated method stub
	}
    
    private static void symbolBit() {    	
    	//有无符号 的左右移动
    	int a=-10;
    	//-10的二进制是11111111111111111111111111110110
    	//第一位是1,即符号位。代表这是一个负数
    	System.out.println(Integer.toBinaryString(a));
    	//对于正数,带符号右移>> 会把所有的位右移,并在最前面加0
    	//对于负数,带符号右移>> 会把所有的位右移,并在最前面加1
 	
    	//-10带符号右移1位,移动后起前面补齐1
    	//得到11111111111111111111111111111011
    	//因为第一位是1      所以依然是一个负数,对应的十进制是-5
    	int b=a>>1;
    	
    	System.out.println(Integer.toBinaryString(b));
    	System.out.println(b); 	
    	
    	// -10 无符号向右移1位, 符号位也向右移,第一位就变成了0
    	// 得到1111111111111111111111111111011对应的十进制是2147483643
    	int k=a>>>1;
    	System.out.println(Integer.toBinaryString(k));
    	System.out.println(k);
		// TODO Auto-generated method stub

	}
    
    private static void threeOperator() {
    	
    	int i=4;
    	int j=9;
    	int k=i<j?99:88; 
    	System.out.println(k);
    	
    	//相当于
    	if (i<j) {
			k=99;
		} else {
			k=88;
		}
    	System.out.println(k);
		// TODO Auto-generated method stub

	}
    
    private static void panOperator() {
    	
    	Scanner s=new Scanner(System.in);
    	System.out.println("今天是周几?");
    	System.out.print("回答说是:");
    	int a=s.nextInt();
    	
    	switch (a) {
		case 1:
			System.out.println("今天是周一!");
			break;
		case 2:
			System.out.println("今天是周二!");
			break;	
		case 3:
			System.out.println("今天是周三!");
			break;	
		case 4:
			System.out.println("今天是周四!");
			break;	
		case 5:
			System.out.println("今天是周五!");
			break;	
		case 6:
			System.out.println("今天是周六!");
			break;	
		case 7:
			System.out.println("今天是周日!");
			break;		
		default:
			break;
		}
 	
		// TODO Auto-generated method stub

	}
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值