算法练习-位操作小技巧

来源:互联网 发布:图书信息管理系统java 编辑:程序博客网 时间:2024/06/05 00:25

交换

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;}


0 0