題目描述
給定兩個int a和b。編寫乙個函式返回a+b的值,但不得使用+或其他算數運算子。測試樣例:
1,2牛客網題目鏈結返回:3
題目分析:
不能使用算術運算子進行計算,首先就想到改變方式使用位運算子完成加法操作,具體實現如下:
我們知道二進位制位的異或運算相當於位相加,例如:
1 ^ 1 = 0 (當前位值為 0 進一位)二進位制位與運算相當於對應位相加之後的進製 ,例如:1 ^ 0 = 1 (當前位值為 1)
0 ^ 0 = 0 (當前位值為 0)
1 & 1 = 1 (當前位的值進一位)那麼兩個數相加就可以表示為:1 & 0 = 0(當前位的值不進製)
0 & 0 = 0 (當前位的值不進製)
對應的二進位制位相加的結果 + 進製的結果
例如:3 + 2 ->0011 + 0010 ->0011 ^ 0010 +(0011 & 0010) << 1)
class
unusualadd
return a;}}
;
c 大數加法
在c 中,我們經常需要表示整數。但是,c 的基本資料型別中,最大的long也只能表示 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之間的數。貨幣型別也不是無限大。如果我們需要表示更大的數,就需要用到一定的演算法來完成。這次,我和大家一起討...
大數 加法 c語言
最近遇到乙個關於大數的問題頓時感覺好方,決定系統學一下大數。注意 關於大數問題,由於陣列不好界定輸入數的大小 陣列的長度 因此主要思想就是先用字串輸入儲存在字串陣列中,再逆序存入整形陣列進行最後逐位運算。剛開始通過部落格寫的 思路 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同...
C語言大數加法
當計算兩個較大的數的和時,可能c語言中的型別諸如int,long,long long型都無法表示時,此時應該換一種思維,將數看成是字串,採用字元陣列的方法進行儲存與運算。同時,應該注意到字元陣列的儲存方式,在字元陣列中,低位位址存放的是字元陣列的高位,所以執行加法時,應該從陣列下標大的位址開始加。以...