对数字的运算除了加减乘除外,也只有位操作了。
常见的位操作实现
- 常用的一个等式:-n = ~(n - 1) = ~n + 1
- 获取整数的二进制的最右边的1:n & (-n) 或 n & ~(n - 1)。例如 n = 010100, -n = 101100,那么n & (-n) = 000100
- 去除整数的二进制的最右边的1:n & (n - 1)。例如 n = 010100,n-1 = 010011,n&(n-1) = 010000
一、加法
模拟二制任加法,将加法的结果分为不进位的相加结果和相加产生的进位两部分。
public static int add(int a,int b){
while(b!=0){
int noCarrayAdd=a^b;
b=(a&b)<<1;