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++;
}
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。