逻辑运算符用于链接布尔型表达式。在Java中不一样于数学的逻辑表达 3<X<5 ,java 中应该写成 x>3 & x<5 java
"&" 和"&&" 的区别; spa
单个"&",左边不管真假,右边都进行计算。 数学
双个"&",左边为假,右边不进行计算。 变量
"|"和"||" 的区别; 技巧
单个"|",左边不管真假,右边都进行计算。 二进制
双个"|",左边为真,右边不进行计算。 co
"|"和"&" 作位运算 位运算
二进制进行|位运算,只有0|0时候为0 ,其余为1,好比6|5 先把6和5换成二进制。6的二进制为110,5的二进制为101 那么用位运算0|0得0 只要有1得1,算出为111,111换成十进制为7,全部6|5等于7 运算符
二进制进行&位运算,只有1&1得1,其余得0,同理可得6&5算出二进制得100,100换成十进制为4
"^"异或运算和"~"反码
任何相同二进制异或运算都得0,1^1=0,0^0=0,不相同的异或运算都得1,1^0=1,0^1=1。同理6^5的011
那么011的十进制是3。提示一个数异或两次变回自己。好比6^5^5的 110,101,101。先得011,再得110全部又变回原来的数值,此技巧能够用来转换数值,不须要第3个变量便可两个变量值互转。
反码:二进制进行反码计算时。1变成0,0变成1。举例子~6,6的二进制是110在机器上补足32位在110以前补码0。那么反码为111.....001,此时的反码减去1得111.....111000,那么原反码减去相减的码获得0000....000111此时的十进制为-7那么加上原来减去的1获得-7+1就是~6了。(这个我也不是很懂。大牛们指正下)
"<<"左移">>"右移">>>"无符号右移
左移:空缺补0,被移除的高位丢弃,空缺位补0,好比32位二进制 0000....00011左移3位变成了0...00011xxx,则xxx补足000便可。规律左移是基数乘以2的移位幂次方,好比3<<2则是3*2*2也就是3乘以2的2次幂。
右移:最高位是什么就补什么。高位是1补1,是0就补0.,规律左移是基数除以2的移位幂次方,好比3>>1则是3/2也就是3除以2的1次幂。
无符号右移:不管高位是0仍是1都补0