/**
* 使用位运算实现int数据的加法
* (a & b) << 1 => 相加 进位结果
* a ^ b => 相加 不进位结果
* 将上述两个结果相加直到无进位
* @param a
* @param b
* @return
*/
public static int addition(int a, int b){
int carry;
while(b != 0){
carry = (a & b) << 1;
a = a ^ b;
b = carry;
}
return a;
}
/**
* 使用位运算实现int数据的减法
* Java负数存储是以补码形式存储的(补码=反码+1)。所以反码=补码-1.即~n=-n-1=-(n+1)
* 所以a-b可以化简为a+(-b)=a+~b+1
* @param minuend 被减数
* @param meiosis 减数
*/
public static int subtraction(int minuend, int meiosis){
return addition(minuend, addition(~meiosis, 1));
}
/**
* 使用位运算实现int数据的乘法
* 8 * 9
* 1 0 0 0
* * 1 0 0 1
* ----------
* 1 0 0 0
* 0 0 0 0
* 0 0
使用java位运算实现int数据的加减乘除
最新推荐文章于 2024-07-05 14:51:01 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)