c++ 用位运算来计算

输入两个数字a和b用位运算输出a-b的值有多组直到输入EOF...

慕码人8056858
浏览 755回答 1
1回答

幕布斯7119047

模拟二进制运算。加法运算:将一个整数用二进制表示,其加法运算就是:相异(^)时,本位为1,进位为0;同为1时本位为0,进位为1;同为0时,本位进位均为0。所以,不计进位的和为sum = a^b,进位就是arr = a&b,(与sum相加时先左移一位,因为这是进位)。完成加法直到进位为0.int add(int a, int b) //递归形式{&nbsp; &nbsp; if(b==0) //递归结束条件:如果右加数为0,即不再有进位了,则结束。&nbsp; &nbsp; &nbsp; &nbsp; return a;&nbsp; &nbsp; int s = a^b;&nbsp; &nbsp; int c = (a&b)<<1; //进位左移1位,达到进位的目的。&nbsp; &nbsp; return add(s, c); //再把'和'和'进位'相加。递归实现。}int add(int a, int b) //非递归形式{&nbsp; &nbsp; int s, c;&nbsp; &nbsp; while(b != 0)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; s = a^b;&nbsp; &nbsp; &nbsp; &nbsp; c = (a&b)<<1;&nbsp; &nbsp; &nbsp; &nbsp; a = s;&nbsp; &nbsp; &nbsp; &nbsp; b = c;&nbsp; &nbsp; }&nbsp; &nbsp; return a;
打开App,查看更多内容
随时随地看视频慕课网APP