位运算实现加减乘除四则运算

来源:互联网 发布:天意网络魔域一条龙 编辑:程序博客网 时间:2024/05/16 00:33
//只用逻辑运算实现加法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;} 

原创粉丝点击