JAVA--位运算

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

你可能感兴趣的:(基本运算符,基础,java)