[技巧]不使用算术运算符让一个数加一(用位运算)
代码如下:
int add(int n) { // 这里假设n>=0,不过对于n<0的情况也是成立的 int c=1; int d; while(c!=0) { d=n&c; n=n^c; c=d<<1; } return n; }
原理就是:
对于一个二进制编码的数字,想要加一可以这样做:从最低位开始向最高位寻找第一个位为0的位,将这个位置1,而后边的位全部置0。
代码如下:
int add(int n) { // 这里假设n>=0,不过对于n<0的情况也是成立的 int c=1; int d; while(c!=0) { d=n&c; n=n^c; c=d<<1; } return n; }
原理就是:
对于一个二进制编码的数字,想要加一可以这样做:从最低位开始向最高位寻找第一个位为0的位,将这个位置1,而后边的位全部置0。