不用任何操作符實現兩個正整數相加

2021-07-07 05:31:57 字數 588 閱讀 7652

首先,既然不能夠用操作符,那我們只能使用位操作來進行。對於位操作有&、|、^、<<、>>這5種操作。那問題是如何能夠用這3種操作來實現兩個資料的相加呢?

在具體操作前,我們先來看看10進製數的相加過程,比如對於「283+969」這個加法操作,一般是從低位往高位進行操作,並且如果兩個數字加起來超過10了,則需要進1。那麼其實這個操作可以分為三步進行:

1.不考慮進為,對每個對應位上的資料直接相加,可以得到「142」;

2.只考慮進製,這千位、百位、十位、個位上的進製分別為「1110」;

3.將第一步和第二步的數字「142」、「1110」重複第1步和第2步,直到所有位數上的進製全部為0為止,這樣就得到最後的結果:「1252」

現在考慮二進位制,同樣可以將二進位制按上述三個步驟進行分解:

1.不考慮進製,

要得到每一位上的和值,可以採用異或(^)操作

2.只考慮進製,

當第i位兩個數均為1時,這第i+1位就需要進1位,因此要得到進製資訊則要採用:與(&) => 左移(<<)

3.將第一步和第二步得到的結果重複進行第1和第2步即可,直到沒有進製資訊,最終的值即為兩個資料的和。

由於**比較簡單,在此略過。

不用除法操作符如何實現兩個正整數的除法?

基礎知識 1 常用的等式 n n 1 n 1 2 獲取整數n的二進位制中最後乙個1 n n 或者n n 1 3 去掉整數n的二進位制中的最後乙個1 n n 1 方法一 根據除法運算的原理進行減法操作,對除法迴圈減被除數,減一次結果加一,直到剛好減為0或餘數小於被除數為止。方法二 遞迴法求解。如果每次...

(筆試題)不用除法操作符,實現兩個正整數的除法

如題所示 假設問題是a除以b 題目要求是正整數,所以考慮的條件不是很多,如果要求是整數的話,即要考慮正負情況的判斷。1 最簡單的就是依次用被除數a減去除數b,並統計減去的次數,即為相除結果 這種方法效率不高,尤其是在被除數a很大,除數b很小的情況下,效率非常低 2 考慮每次相減時,將b翻倍,這樣就可...

不用加減乘除實現兩個正整數的加法

很常見的一道題,網上也有各種各樣的解法,備忘一下。首先來看十進位制整數的加法,123 999,將其分為三步來運算 1 對每一位相加,不考慮進製。當有進製時,捨棄。如下 123 999 012 2 考慮進製的影響。觀察可發現,當個位相加有進製時,實際上少加了10,當百位有進製時,實際上少加了100,依...