[Amazon] Add Binary Number By 1 without using + 正数加1不用加号

Bit操作的题, 给一个整数+1,不能用加号.

其实很简单,扫一下整数的每个bit(从低位到高位), 对它做&操作, 如果结果是0, 证明此位是0, 那么我们在这位+1, 如果是1, 那么我们清空此位.

public class addBinaryNumberBy1WithoutPlus {
    public int add(int n) {
        for(int i = 0; i < 32; i++) {
            if (((1 << i) & n) == 0){      //until we find the first 1 bit
                n = n | (1 << i);
                break;
            }
            else
                n = n & ~(1 << i); // clean bits
        }
        return n;
    }
    public static void main(String[] args) {
        for (int i = -500; i < 500; i++) {
            System.out.println(new addBinaryNumberBy1WithoutPlus().add(i));
        }
    }
}