Bitwise +,-,/*
long long bitwise_div(long long dividend, long long int divisor)
{
long long sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;
dividend = abs(dividend);
divisor = abs(divisor);
long long quotient = 0;
while (dividend >= divisor)
{
dividend -= divisor;
++quotient;
}
return quotient * sign;
}
int bitwise_multi(int a, int b)
{
int result = 0;
while (b > 0) {
if (b & 1) {
result += a;
}
a = a << 1;
b = b >> 1;
}
return result;
}
int bitwise_sub(int x, int y)
{
while (y != 0)
{
int borrow = (~x) & y;
x = x ^ y;
y = borrow << 1;
}
return x;
}
int bitwise_add(int x, int y)
{
while (y != 0)
{
int carry = x & y;
x = x ^ y;
y = carry << 1;
}
return x;
}
Comments
Post a Comment