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
}
}