Ral*_*lph 1 c java bit-manipulation
我正在解决一个面试问题,即编写一个方法,在不使用+运算符的情况下添加两位数.
我非常了解算法,我可以在C中轻松完成.
这是算法,它完美地运作:
int add(int x, int y) {
int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a);
return b;
}
Run Code Online (Sandbox Code Playgroud)
我尝试将此代码转换为Java,但是这个算法的功能是因为a将在一个点上变为000,在C中将在while循环中等于False.Java中的替代方案是什么?
谢谢.
您需要在Java中为条件使用布尔值:
while (a != 0)
编辑(完整代码):
int add(int x, int y) {
int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a != 0);
return b;
}
Run Code Online (Sandbox Code Playgroud)