用位运算实现四则运算

代码:

 1 #include <cstdio>
 2 
 3 int add(int a, int b) {
 4     if(a == 0 || b == 0) {
 5         return a ^ b;
 6     }
 7     return add( (a&b) << 1, a ^ b);
 8 }
 9 
10 int nagetive(int x) {
11     return add(~x, 1);
12 }
13 
14 int sub(int a, int b) {
15     return add(a, nagetive(b));
16 }
17 
18 int mul(int a, int b) {
19     int ans = 0;
20     while(b) {
21         if(b & 1) 
22             ans = add(ans, a);
23         a <<= 1;
24         b >>= 1;
25     }
26     return ans;
27 }
28 
29 int div(int a, int b) {
30     int ans = 0;
31     for(int i = 31; i >= 0; i--) {
32         if( (a >> i) >= b ) {
33             ans = add(ans, 1 << i);
34             a = sub(a, b << i);
35         }
36     }
37     return ans;
38 }
39 
40 int main() {
41     int a = 3, b = 4;
42     printf("%d\n", add(a, b));
43     printf("%d\n", sub(a, b));
44     printf("%d\n", mul(a, b));
45     printf("%d\n", div(a, b));
46 }
View Code

 

posted @ 2015-09-23 09:22  悠悠我心。  阅读(155)  评论(0编辑  收藏  举报