C 另類加法

2021-10-11 02:50:38 字數 705 閱讀 5125

題目描述

給定兩個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型都無法表示時,此時應該換一種思維,將數看成是字串,採用字元陣列的方法進行儲存與運算。同時,應該注意到字元陣列的儲存方式,在字元陣列中,低位位址存放的是字元陣列的高位,所以執行加法時,應該從陣列下標大的位址開始加。以...