交换
public static void swap(int a, int b) {
a ^= b;
b ^= a;
a ^= b;
}
当然,这个方法调用并没有什么用处,a,b参数对调用者没有任何影响。变号
public static int reverseSign(int x) {
return ~x+1;
}
不用+做加法
public static int addWithoutPlus(int a, int b) {
while(b != 0) {
int c = a^b;
b = (a&b)<<1;
a = c;
}
return a;
}
a^b表示加,(a&b)<<1找出进位。
求绝对值
public static int abs(int x) {
int sign = x >> 31;
return (x ^ sign) - sign;
}