牛客網 不用加減乘除做加法

2021-07-06 06:39:48 字數 1134 閱讀 3205

寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

下面舉個例子:

13+11 = ?; 

13 的二進位制      1 1 0 1                     -----a        13 

11 的二進位制      1 0 1 1                     -----b        11   

(a&b) <<1  ->   1 0 0 1 

0                         -----d         18

a^b  ->     0 1 1 

0                   -----e          6 

(d&e) <<1  ->   0 0 1 

0 0                       ------f         4

d^e  ->  1 0 1 

0 0                  -----g        20

(f&g) <<1  ->   0 1

0 0 0                       ------h        8

f^g  ->  1 0 

0 0 0

------i           16

(h&i) <<1  ->   0 

0 0 0 0

------h        0       ---- --------退出迴圈

h^i  ->  1 1 0 0 0                 

------i           24

總結出來的邏輯

//step1:按位與是檢視兩個數哪些二進位制位都為1,這些都是進製位,結果需左移一位,表示進製後的結果 

//step2:異或是檢視兩個數哪些二進位制位只有乙個為1,這些是非進製位,可以直接加、減,結果表示非進製位進行加操作後的結果 

//step3:n1&n2是檢視有沒有進製位了,如果有,需要重複step1、step2;

public int add(int num1,int num2) while (num2!=0);

return num1;

}

牛客網 不用加減乘除做加法

題目 寫乙個函式,求兩個整數之和,要求在函式體內不能使用 四則運算符。思路 不能用四則運算,那就只能利用位運算進行計算。十進位制計算 例如 27 85 112 分三步 1 對各位只做相加不進製,結果為2 2 考慮進製,7 5中有進製,進製的值是10 2 8有進製,進製的值是100 3 將前面的三個結...

牛客網 劍指offer 不用加減乘除做加法

題目描述 寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。題目很簡單,但解決起來還是有一定難度的,說起代替加減乘除的方式,一下子能想起來的有sizeof,二進位制的位運算。sizeof行不通之後,又琢磨位運算中的異或,1 1 0,1 0 1,0 1 1,0 0 0。這個規則看起來最...

不用加減乘除做加法

author 過路的守望 思路 i 先將各bit位相加,不計進製,這一步可以用m n實現 ii 加上進製,進製如何來,用m n可以得到m和n中都為1的bit位,而不全為1的位則全部變為了0,該位相加會發生進製,使得左邊一位加1,因此 m n 1邊可得到進製後要加的1的位置 iii 將前面兩步的結果相...