国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

不用加減乘除做加法

這篇具有很好參考價值的文章主要介紹了不用加減乘除做加法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、描述

寫一個函數(shù),求兩個整數(shù)之和,要求在函數(shù)體內(nèi)不得使用+、-、*、/四則運(yùn)算符號,本題OJ鏈接
數(shù)據(jù)范圍:兩個數(shù)都滿足 ?10≤n≤1000
進(jìn)階:空間復(fù)雜度 O(1),時間復(fù)雜度 O(1)

二、方法

分析:本題要求不能使用+、-、*、/,所以我們應(yīng)該從二進(jìn)制的角度去考慮,因?yàn)槎M(jìn)制的加法可以通過與(&)、或(|)、左移(<<)和或(|)來完成,并且二進(jìn)制的話不用考慮正負(fù)數(shù),直接對補(bǔ)碼進(jìn)行加法運(yùn)算就行。但是具體怎么加呢?人去計(jì)算二進(jìn)制相加很簡單,直接通過肉眼就可以判斷哪里要進(jìn)位,哪里不需要,然后再最終相加,但是電腦不會這樣做,那該怎么辦呢?
思路:通過十進(jìn)制相加思想推導(dǎo)出二進(jìn)制相加思想
十進(jìn)制相加思想(和平常的直接加法不同):
1、如果兩數(shù)相加每一位都不會產(chǎn)生進(jìn)位,則直接相加就是最終結(jié)果
2、如果兩數(shù)相加會產(chǎn)生進(jìn)位(無論哪幾位產(chǎn)生進(jìn)位都行),先計(jì)算不考慮進(jìn)位的相加結(jié)果,記作a,再計(jì)算進(jìn)位,記作b,然后把a(bǔ)和b看作新得到的兩個數(shù)相加,看是情況1還是情況2,一直這樣下去,直到計(jì)算出結(jié)果
例如,如下圖所示:
不用加減乘除做加法,OJ,leetcode,算法
二進(jìn)制相加思想
和上面十進(jìn)制相加思想一樣,只不過:
1、有沒有產(chǎn)生進(jìn)位通過相與來判斷,相與結(jié)果為0,沒有進(jìn)位,否則,有進(jìn)位。沒有進(jìn)位,兩數(shù)相或就是最終結(jié)果;有進(jìn)位,需要進(jìn)一步計(jì)算,與的結(jié)果左移一位就是最終的進(jìn)位
2、不考慮進(jìn)位的相加結(jié)果通過異或可以完成
例如,如下圖所示:
不用加減乘除做加法,OJ,leetcode,算法
分析:產(chǎn)生多少次進(jìn)位,就循環(huán)多少次,最多不超過32次進(jìn)位,時間復(fù)雜度O(1),空間復(fù)雜度O(1)
代碼實(shí)現(xiàn):文章來源地址http://www.zghlxwxcb.cn/news/detail-691110.html

int Add(int a, int b )
{
    int n1 = 0;
    int n2 = 0;
    while(a & b) //判斷是否有進(jìn)位,有進(jìn)位一直循環(huán)計(jì)算,直到?jīng)]有進(jìn)位為止
    {
        n1 = (a & b) << 1; //最終的進(jìn)位
        n2 = a ^ b; //不考慮進(jìn)位的相加結(jié)果
        a = n1; //作為新的a
        b = n2; //作為新的b
    }
    return a | b; //此時a&b不會產(chǎn)生進(jìn)位,計(jì)算最終結(jié)果
}

到了這里,關(guān)于不用加減乘除做加法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 高精度(加減乘除)

    高精度的核心思想就是利用數(shù)組去儲存大數(shù),然后通過模擬手動計(jì)算的方式,來進(jìn)行計(jì)算。 主要分三個模塊: 1.讀入數(shù)據(jù)并轉(zhuǎn)換為(int)類型儲存 核心思想:將每個位上的數(shù)字都+起來,如果大于10就進(jìn)位。 核心代碼如下: 完整代碼及解析如下: 減法核心:只使用大數(shù)減小數(shù)

    2024年02月08日
    瀏覽(24)
  • bigdecimal加減乘除運(yùn)算

    打印的結(jié)果如下: 打印結(jié)果如下: 打印結(jié)果如下:

    2024年02月11日
    瀏覽(20)
  • 圖像四則運(yùn)算(加減乘除)

    圖像四則運(yùn)算(加減乘除)

    實(shí)驗(yàn)?zāi)康模?1.了解圖像的算術(shù)運(yùn)算在數(shù)字圖像處理中的初步應(yīng)用。 2.體會圖像算術(shù)運(yùn)算處理的過程和處理前后圖像的變化。 3.能夠?qū)崿F(xiàn)簡單的圖像處理 實(shí)驗(yàn)原理: 圖像的代數(shù)運(yùn)算包括加,減,乘,除,這些運(yùn)算的主要對象是圖像數(shù)據(jù)塊中的數(shù)據(jù)。這四種代數(shù)運(yùn)算可以由如

    2024年02月08日
    瀏覽(25)
  • C語言加減乘除運(yùn)算

    加減乘除是常見的數(shù)學(xué)運(yùn)算,C語言當(dāng)然支持,不過,C語言中的運(yùn)算符號與數(shù)學(xué)中的略有不同,請見下表。 加法 減法 乘法 除法 求余數(shù)(取余) 數(shù)學(xué) + - × ÷ 無 C語言 + - * / % C語言中的加號、減號與數(shù)學(xué)中的一樣,乘號、除號不同;另外C語言還多了一個求余數(shù)的運(yùn)算符,就是

    2024年02月06日
    瀏覽(16)
  • 只使用位運(yùn)算實(shí)現(xiàn)加減乘除

    只使用位運(yùn)算實(shí)現(xiàn)加減乘除

    在線OJ: LeetCode 29. 兩數(shù)相除 原題目的要求是不能使用乘法, 除法和取余運(yùn)算符實(shí)現(xiàn)除法. 在本篇博客中把題目要求提高一點(diǎn), 這里只使用位運(yùn)算來實(shí)現(xiàn), 順便的也就把只使用位運(yùn)算實(shí)現(xiàn)加減乘除實(shí)現(xiàn)了. 首先我們需要知道兩數(shù)之和可以是兩個數(shù)位相加和不進(jìn)位相加之和, 而兩數(shù)進(jìn)

    2024年02月06日
    瀏覽(45)
  • Rust 復(fù)數(shù)運(yùn)算,重載加減乘除運(yùn)算

    Rust 復(fù)數(shù)運(yùn)算,重載加減乘除運(yùn)算

    復(fù)數(shù)定義 由實(shí)數(shù)部分和虛數(shù)部分所組成的數(shù),形如a+bi 。 其中a、b為實(shí)數(shù),i 為“虛數(shù)單位”,i2 = -1,即虛數(shù)單位的平方等于-1。 a、b分別叫做復(fù)數(shù)a+bi的實(shí)部和虛部。 當(dāng)b=0時,a+bi=a 為實(shí)數(shù); 當(dāng)b≠0時,a+bi 又稱虛數(shù); 當(dāng)b≠0、a=0時,bi 稱為純虛數(shù)。 實(shí)數(shù)和虛數(shù)都是復(fù)

    2024年02月13日
    瀏覽(18)
  • Python Opencv實(shí)踐 - 圖像的加減乘除

    Python Opencv實(shí)踐 - 圖像的加減乘除

    ? ? ? ? ? ?

    2024年02月13日
    瀏覽(25)
  • Pytorch入門:Tensor加減乘除矩陣運(yùn)算

    若張量維數(shù)大于2,則對最后兩維進(jìn)行matmul。進(jìn)行此運(yùn)算的要求是張量a與b除最后兩維外的其他維必須一致:

    2024年02月12日
    瀏覽(25)
  • Java進(jìn)行數(shù)字計(jì)算 BigDecimal計(jì)算(加減乘除)

    Double只能處理16位有效數(shù)精度,在某些情況下精度對其需求是不夠的,所以就有了BigDecimal。因?yàn)锽igDecimal的精度范圍的范圍大,所以在問我們的開發(fā)業(yè)務(wù)中對精度要求高的屬性,就需要BigDecimal來進(jìn)行存儲計(jì)算,防止精度丟失。這里我主要介紹一下BigDecimal的加,減,乘,除。四

    2023年04月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包