#include <iostream>
using namespace std;
int x, y;
void swap(int a, int b) {
a = a ^ b;
b = a ^ b; // b = a^b^b = a;
a = a ^ b; // a = a ^ b ^ a= b;
}
int add_(int a, int b) {
while(b) {
auto t = (a&b) << 1;
a = a ^ b;
b = t;
}
return a;
}
int neg(int a) {
return add_(~a, 1);
}
int minus_(int a, int b) {
return add_(a, neg(b));
}
int multi_(int a, int b) {
int res = 0;
while(b) {
if(b&1) {
res = add_(res, a);
}
a <<= 1;
b >>= 1;
}
return res;
}
int divide_(int a, int b) {
if(a < b) return 0;
int cnts = 1, tmp = b;
while(tmp+tmp <= a) {
cnts = add_(cnts, cnts);
tmp = add_(tmp, tmp);
}
return add_(cnts, divide_(a-tmp, b));
}
int main() {
cin >> x >> y;
cout << "add = " << add_(x, y) << endl;
cout << "minus = " << minus_(x, y) << endl;
cout << "multi = " << multi_(x, y) << endl;
cout << "divide = " << divide_(x, y) << endl;
return 0;
}
位运算实现加减乘除、交换
于 2023-03-22 15:01:56 首次发布