首页 > 其他 > 详细

用位运算实现四则运算

时间:2015-09-23 10:21:39      阅读:133      评论:0      收藏:0      [点我收藏+]

代码:

技术分享
 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

 

用位运算实现四则运算

原文:http://www.cnblogs.com/zhanzhao/p/4831247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!