//只用逻辑运算实现加法
int add(int a, int b)
{
if(0 == b)
{
return a;
}
int sumTemp = a ^ b;
int carry = (a & b) << 1;
return add{sumTemp, carry};
}
//只用逻辑运算实现减法
int minus(int a, int b)
{
b = add(~b, 1);
return add(a, b);
}
//逻辑运算实现除法 低效
int div(int a, int b)
{
assert(b == 0);
int result = 0;
while(a >= b)
{
result++;
a = a - b;
}
return result;
}
//逻辑运算+递归 实现除法 高效
int div(const int x, const int y)
{
int temp = x;
int result = 0;
while(temp >= y)
{
int multi = 1;
while(y * multi <= (temp >> 1))
{
multi = multi << 1;
}
result += multi;
temp -= y * multi;
}
return result;
}
//只用逻辑运算实现乘法
int multipiy(int a , int b)
{
bool flag = (b < 0);
if(flag)
{
b = -b;
}
map<int, int> bit_map;
for(int i =0; i < 32; i++)
{
bit_map.insert(pair<int, int>(1 << i, i));
}
while(b > 0)
{
int last_bit = bit_map[b & ~(b - 1)];
sum += (a << last_bit);
b &= (b - 1);
}
if(flag)
{
sum = -sum;
}
return sum;
}
位运算实现加减乘除四则运算
最新推荐文章于 2022-04-27 18:25:29 发布