題目:寫乙個函式,求兩個整數之和,要求在函式體內不能使用 +、-、*、/ 四則運算符。
思路:不能用四則運算,那就只能利用位運算進行計算。
十進位制計算:例如 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 將前面兩步的結果相...