计算一个整数中位为1的位数:
不借住额外存储空间交换两个整数的值:
public class BitCount {
public static int bitCount(int x) {
if(x == 0) {
return 0;
}
if(x < 0) {
x = -x;
}
int count = 1;
while((x &= (x - 1)) != 0) {
count++;
}
return count;
}
public static void main(String[] args) {
System.out.println(bitCount(0));
System.out.println(bitCount(1));
System.out.println(bitCount(5));
System.out.println(bitCount(7));
System.out.println(bitCount(-9));
}
}
不借住额外存储空间交换两个整数的值:
int a = 3, b = 5;
System.out.printf("a = %d, b = %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
System.out.printf("a = %d, b = %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.printf("a = %d, b = %d\n", a, b);