Java_按位与&,按位或,取反,左移,右移运算符

//按位与运算&
System.out.println(0&0);//0
System.out.println(0&1);//0
System.out.println(1&1);//1
System.out.println("===========");
//按位或运算符|
System.out.println(0|0);//0
System.out.println(0|1);//1
System.out.println(1|1);//1
System.out.println("===========");
//异或运算符^
System.out.println(0^0);//0
System.out.println(0^1);//1
System.out.println(1^1);//0
System.out.println("===========");
//取反运算符~
//部分要点:
//什么是取反:取反就是0=>1 1=>0
//什么是补码:正数的补码是其反码,负数的补码为其反码+1,例5的二进制为0 0101,而0 0101的补码是1 1010,-5的二进制是1 0101,而1 0101的补码是1 1011 
//什么是原码:规定正数的补码与原码相同,负数的原码是其反码+1
//---------------------------------------------------------
//6为正数,二进制为 0 0110 (第一个0代表正负)
//然后计算补码,即1 1001
//求原码,对后4位进行按位取反,即 1 0110
//然后对二进制进行补码+1操作,即 1 0111
//1010转成十进制为7,加上前面的负号,得-7
//如6为正数,其二进制为110,取反后为001,补码右边+1为1010,原来6为正,取反为负,得-2
//----------------------------------------------------------
System.out.println(~6);//-7
System.out.println(~42);//-43
System.out.println("===========");
//左移运算符<<(即向左移动,右边补0)
//如2的二进制为10,若2<<2,则1000,也就是十进制8,同理若2<<3,则10000,也就是十进制16,根据规律可以看出n<<m=n*(2^m)
System.out.println(15<<2);//60: 15*(2^2)
//右移有符号运算符>>(即向右移动,但左边补0还是1需要看原来的数是正的还是负的)
System.out.println(2>>2); //0(右边移除的数将被丢弃)
System.out.println(-8>>3); //-1
原文地址:https://www.cnblogs.com/eRrsr/p/6401881.html