java的位运算
什么是位运算,位运算符就是在二进制的情况下对bit位的运算 在计算机当中,数字都是由二进制构成,由一串0或1构成,一个字节是由八位0或1构成,所以一般情况下都是由八位构成。 但是最高位都是符号位0为正数1为负数 比如:8 = 0000 1000 2 = 0000 0010 20 = 0001 0100
位运算的的运算都有: << >> <<< & | ^ ~
移位运算符可适用于的的数据类型都有 byte,short,char,int和long
<<
意为左移一位的意思,左移时最高位丢弃不要后面补0 比如: 0000 0010(2)左移一位0000 0100(8) 就会发现这个就是乘法,乘以2
>>
意为右移一位,但是>>右移时 叫做带符号右移 0000 0010 右移一位 0000 0001 1000 0100 右移一位 1100 0010 最高位为1时,右移最高位补1,最高位为0时,右移最高位补0
>>>
不带符号右移一位 0000 0010 右移一位 0000 0001 1000 0100 右移一位 0100 0010 右移时,最高位不管是什么都是补0
&(按位与)
双目运算符。就和与运算一样,只不过是0和1之间的与运算,只有碰到1&1时才等于1,其余都为0 0101 1101 1001 1001 & 0001 1001 为结果
|(按位或)
双目运算符。在二进制时,和&刚好相反,只有遇到0|0时才等于0,其余都为1 0101 1101 1001 1001 | 1101 1101 为结果
^(按位异或)
双目运算符。当两个二进制操作数相同时结果为0,否则为1,就是0^1=1、 1^0=1。其余为0 0101 1101 1001 1001 ^ 1100 0100 为结果
~(按位取反)
也叫做按位非。为单目运算符。 就是把二进制中各个的0或1取反 0101 1101 ==> 1010 0010
1001 1001 ==> 0110 0110
|