首页 > 代码库 > 《Cracking the Coding Interview》——第18章:难题——题目1
《Cracking the Coding Interview》——第18章:难题——题目1
2014-04-29 00:56
题目:不用算数运算,完成加法。
解法:那就位运算吧,用加法器的做法就可以了。
代码:
1 // 18.1 add two numbers wihout using arithmetic operator. 2 #include <iostream> 3 using namespace std; 4 5 int add(int x, int y) 6 { 7 int sum; 8 int carry; 9 int bx, by; 10 int base; 11 12 base = 1; 13 carry = 0; 14 sum = 0; 15 while (base != 0) { 16 bx = x & base; 17 by = y & base; 18 base <<= 1; 19 sum |= ((bx) ^ (by) ^ carry); 20 carry = ((bx & by) || (bx & carry) || (by & carry)) ? base : 0; 21 } 22 23 return sum; 24 } 25 26 int main() 27 { 28 int x, y; 29 30 while (cin >> x >> y) { 31 cout << add(x, y) << endl; 32 } 33 34 return 0; 35 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。