1 #include <stdio.h>
2
3 // 除法
4 int div(int loperand, int roperand)
5 {
6 int cnt = 0;
7 while (loperand > roperand)
8 {
9 cnt++;
10 loperand -= roperand;
11 }
12
13 return cnt;
14 }
15
16 // 取余数
17 int getRemainder(int loperand, int roperand)
18 {
19 while (loperand > roperand)
20 loperand -= roperand;
21
22 return loperand;
23 }
24
25 // 加法
26 unsigned int add(unsigned int loperand, unsigned int roperand)
27 {
28 int currentbit = 0, carrybit = 0;
29 unsigned int res = 0;
30 int cnt = 0;
31 int len = sizeof(loperand) << 3;
32
33 while (cnt < len)
34 {
35 int tmp = carrybit; // 临时存放进位位
36 carrybit = 0;
37 // 计算当前位结果
38 currentbit = (loperand & 0x01) ^ (roperand & 0x01);
39 // 判断当前位置计算是否进位
40 if (currentbit == 0 && (loperand & 0x01) == 1)
41 carrybit = 1;
42 else if (currentbit == 1 && tmp == 1)
43 carrybit = 1;
44 currentbit ^= tmp;
45 // 计算结果
46 res |= (currentbit << cnt);
47 cnt++;
48 loperand >>= 1, roperand >>= 1;
49 }
50
51 return res;
52 }
53 int main()
54 {
55 int num1 = 65535;
56 int num2 = 65535;
57
58 printf("%d + %d = %d", num1, num2, add(num1, num2));
59
60 return 0;
61 }