【IT笔试面试题整理】不用加减乘除做加法
生活随笔
收集整理的這篇文章主要介紹了
【IT笔试面试题整理】不用加减乘除做加法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
【試題描述】寫(xiě)一個(gè)函數(shù),求兩個(gè)整數(shù)的和,要求在函數(shù)體內(nèi)不得使用加減乘除四則運(yùn)算符合。
?
基本思路是這樣的:
?
int A, B;
A&B //看哪幾位有進(jìn)位
A^B //不帶進(jìn)位加
?
考慮二進(jìn)制加法的過(guò)程,
步驟一、A^B,能夠得到?jīng)]有進(jìn)位的加法。
步驟二、A&B,能夠得到相加之后,能夠進(jìn)位的位置的信息。向左移動(dòng)一位,就是兩個(gè)二進(jìn)制數(shù)相加之后的進(jìn)位信息。所以,(A&B)<<1就是兩個(gè)二進(jìn)制數(shù)相加得到的“進(jìn)位結(jié)果”。
步驟三、將前兩步的結(jié)果相加。相加的過(guò)程就是步驟一和步驟二,直到不再產(chǎn)生進(jìn)位為止。
【參考代碼】
?
1 public static int func2(int a, int b) { 2 int sum; 3 int carry; 4 int num1 = a; 5 int num2 = b; 6 do { 7 sum = num1 ^ num2; 8 carry = (num1 & num2) << 1; 9 num1=sum; 10 num2=carry; 11 } while (carry != 0); 12 return sum; 13 }
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/WayneZeng/archive/2013/04/09/3010252.html
總結(jié)
以上是生活随笔為你收集整理的【IT笔试面试题整理】不用加减乘除做加法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 万能的天涯大神们,我是来求一本小说的名字
- 下一篇: 编码风格 - 函数