##运算符
一、位运算符
&位与运算符 对应位都是1为1,否则为0
eg. 11001 & 01100 = 01000 任意一个数与1进行位与操作结果为0是偶数,结果为1是奇数
|位或运算,对应位都是0结果为0,否则结果为1
eg. 11001 | 01100 = 11101 --> 1+4+8+16=29
^ 异或运算,对应位相同结果为0,不同结果为1
eg. 11001 ^ 01100 = 10101 -->21
二、原码,反码,补码
原码 表示的是原码
反码 反码为表述负数
补码 存的是补码 效率最高
5 (单字节)
0000 0101 原码
0000 0101 反码
0000 0101 补码
-5
1000 0101 原码
1111 1010 反码 (各位取反)
-
1111 1011 补码 (反码基上+1)
-
按位取反(结果是补码) 对应位是0变为1,是1变为0
-
00011001 -> 11100110 结果补码
11100110 补码
11100101 反码
10011010 原码
10011010 推倒回十进制数 -26
三、
<< 左移运算符 变量<< 常数 将这个变量的二进制数向左移动几个常数位
eg:
num1 << 2 要将25的二进制数向左移动两个常数位,空出来的补0
11001 --> 01100100 -->4 32 64 --> 100
说明 左移几位就相当于当前这个数乘以了几次2
>>右移运算符 变量>> 常数 将这个变量的二进制数向右移动几个常数位
public class Main {
public static void main(String[] args) {
int num1=25;
System.out.println(num1>>1);
System.out.println(num1>>2);
System.out.println(num1>>3);
}
}
与左移同理,只不过右移是除以2