Offer

Java-学习日记(位运算实现加减乘除)

位运算-Java

记得以前用大数运算的时候也是位运算实现的,现在用位运算实现加减乘除

  • 加法运算
a + b
//a + b的和等于异或 +进位,进位为0就说明运算结束了
whlie(b != 0){
	int carry = (a & b) << 1;	    
    a ^= b;
    b = c;
}

  • 减法运算
a - b
b = ~(b - 1);	//补码
a + b;
    
  • 乘法运行(需要考虑符号, a ^ b < 0即异号)
a * b;
int ans;
while (b > 0){
    //不仅可以判断奇数偶数,也可以判断尾数
    if((b & 1) == 1){
        ans += a;
    }
    a <<= 1;
    b >>= 1;
}

  • 除法运行(就是不断相减即可,同样也要考虑符号问题)剑指Offer66题里面不能用除法,因为遇到0的话就全是0了
a / b;

int ans = 0;
while(a >= b){
    a -= b;
    ans++;
}
posted @ 2020-08-29 11:24  Empirefree  阅读(213)  评论(0编辑  收藏  举报