public class TestByte {
public static void main(String[] args) {
testNot();
testOR();
testAnd();
testLeftMove();
testRigthMove();
testNosige();
xor();
}
/**
* 测试非
* ~
*结果
* .. -4 -3 -2 -1 0 1 2 3 ..
* 0-->-1
* 1-->-2
* 2-->-3
* 3-->-4
* -1-->0
* -2-->1
* -3-->2
*/
public static void testNot(){
int i=0;
int j=1;
int t=2;
int k=3;
println(~i,"测试非~0");
println(~j,"测试非~1");
println(~t,"测试非~2");
println(~k,"测试非~3");
System.out.println("");
j=-1;
t=-2;
k=-3;
println(~j,"测试非~-1");
println(~t,"测试非~-2");
println(~k,"测试非~-3");
System.out.println("------------------------------");
}
/**
* 换成二进制,要组成相同的位数;再进行比较;最后换成10进制
* 1-->1=1
* 1-->0=1;
* 0-->1=1;
* 0-->0=0;
* 测试位或
* |
*/
public static void testOR(){
println(4|20,"测试位或 4|20");
println(5|12,"测试位或 5|12");
println(6|28,"测试位或 6|28");
println(7|4,"测试位或 7|4");
System.out.println("------------------------------");
}
/**
* 换成二进制,要组成相同的位数;再进行比较;最后换成10进制
* 1-->1=1
* 1-->0=0;
* 0-->1=0;
* 0-->0=0;
* 测试位与
* &
*/
public static void testAnd(){
println(20&4,"测试位与 20&4");
println(12&5,"测试位与 12&5");
println(28&6,"测试位与 28&6");
println(4&7,"测试位与4&7");
System.out.println("------------------------------");
}
/**
*
* 测试左移
* <<
*/
public static void testLeftMove(){
/**
* 8左移3位
* 8的二进制是:1000;最后要判断8是的类型;类型不同;转换的结果也不能;int=32位;long=64位;byte=1位
* 这里8是int;所以8的最后结果是:0000 0000 0000 0000 0000 0000 0000 1000
* 向左去掉三位;最后在右边补三位;结果是:0 0000 0000 0000 0000 0000 0000 1000 000
* 然后换成十进制是64
*
*/
println(8<<3, "8左移3位");
println(35<<3, "35左移3位");
System.out.println("------------------------------");
}
/**
* 测试右移
* >>
*/
public static void testRigthMove(){
/**
* 12右移3位
* 12的二进制值是: 0000 0000 0000 0000 0000 0000 0000 1100
* 向右去掉三位;最后在左边补三位;结果是:000 0000 0000 0000 0000 0000 0000 0000 1
* 然后换成十进制是1
*/
println(12>>3, "12右移3位");
println(25>>3, "25右移3位");
System.out.println("------------------------------");
}
/**
* 测试无符号算数右移
* >>>
*/
public static void testNosige(){
/**
* 无符号右移好像和右移算位一样哦;不过要确定数值类型
*/
println(48>>>3, "48无符号右移3位");
println(101>>>3, "101无符号右移3位");
System.out.println("------------------------------");
}
/**
* 异或
* 真^假=真
* 假^真=真
* 假^假=假
* 真^真=假
* 1-->1=0
* 1-->0=1;
* 0-->1=1;
* 0-->0=0;
*/
public static void xor(){
//异或
System.out.println(true^false);
System.out.println(false^true);
System.out.println(true^true);
System.out.println(false^false);
/**
* 1=010
* 6=110
* 结果是:100换成十进制就是4
*/
System.out.println(2^6);
System.out.println(6^1);
System.out.println(6^6);
System.out.println(0^0);
System.out.println(1^1);
}
public static void println(Object j,String msg){
System.out.println(msg+":\t"+j);
}
}