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

2021-08-13 19:31:51 字數 568 閱讀 2906

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

思路:不能用四則運算,那就只能利用位運算進行計算。

十進位制計算:例如 27+85=112

分三步:(1)對各位只做相加不進製,結果為2;

(2)考慮進製,7+5中有進製,進製的值是10;2+8有進製,進製的值是100;

(3)將前面的三個結果相加,得到的結果為112。

二進位制計算:例如 7+4=11        7的二進位制為0111         4的二進位制為0100

分三步:(1)只做相加不進製,相當於異或操作:0111 ^ 0100 = 0011;

(2)考慮進製,相當於與操作:0111 & 0100 = 0100,有進製,因此,將結果向前進製,得到1000;

(3)因為存在進製,所以將以上得到的兩個結果,重複步驟(1)和步驟(2),直到與操作不產生進       位,此時步驟(1)得到的結果即為原始的兩個數之和。

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

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 四則運算符號。下面舉個例子 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...

牛客網 劍指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 將前面兩步的結果相...