位运算

#Java

位运算

指的是二进制位的运算,先将十进制数转成二进制后再进行运算;在二进制位运算中,1表示true,0表示false

位移运算符

左移运算符:二进制左移,符号位丢弃,右边补齐0;

右移运算符:二进制右移,使用符号位进行补位;(符号位是什么就用什么补位)

无符号位右移:无论符号位是0还是1,都补0

案例:交换两个数据(不使用第三方变量)

int a = 10;
int b = 20;
a = a ^ b;   // a = 10 ^ 20
b = a ^ b;   // b = 10 ^ 20 ^ 20 一个数被其他数异或两次,该数本身不变,此时的值为10
a = a ^ a;   // a = 10 ^ 20 ^ 10

案例:数组反转

int arr = {11, 22, 33, 44};
for (int start = 0, end = arr.length - 1; start < end; start++, end--){    
	int temp = arr[start];
	arr[start] = arr[end];
  arr[end] = temp;
}