題目要求如圖
思考
不能使用四則運算,根據過往的學習經曆,我唯一能想到的就是位操作符和移位操作符
例:使用位操作符進行int變量交換
位操作符的使用先來回顧一下這位操作符的作用
位操作符操作的是整形的二進制位,它的操作數是2,比較兩個整形的二進制位
(1)&按位與:對應的二進制 全為1才是1,否則0
(2)|按位置或:對應的二進制 有1為1,全為0才為0
(3)^按位異或:相同為0,不同為1
比較一下正常的二進制相加和按位異或,發現按位異或是沒有進位的相加
原本應該是010,但是按位異或後是000
1 1需要進位的1并沒有進到下一位裡去
而使用按位與操作符,我們可以得到這兩個數相加需不需要進位
這時候将按位與之後的結果和按位相加,就是我們的答案了
但是題目要求不能使用加減法
a.再将按位與的結果0 1 0與 按位異或結果0 0 0進行按位與
b.得到0 0 0,代表無需進位
c.這時候将0 1 0與0 0 0進行按位異或,即得出相加後的結果0 1 0
這個例子比較簡單,我們可以再用複雜一點的例子再證明它的可行性
3:0011和5:0101
根據這個思路,我們成功地完成了3和5的相加
代碼實現本題是接口型題目,我們隻需要完成一個函數,實現相加的功能
不過我們可以自己寫一個主函數來測試它的可行性
如圖,函數正确算出了兩個數的和
如果這篇博客幫到了你,還請點個贊啦~
-----------------------------------
為了幫助大家,輕松,高效學習C語言/C ,給大家分享我收集的資源,從最零基礎開始的,幫助大家在學習C語言的道路上披荊斬棘!
編程學習書籍分享:
編程學習視頻分享:
整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)
對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!