最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c語言中用位運(yùn)算實(shí)現(xiàn)加法技巧介紹

 更新時(shí)間:2012年11月24日 15:10:03   作者:  
用位運(yùn)算實(shí)現(xiàn)加法也就是計(jì)算機(jī)用二進(jìn)制進(jìn)行運(yùn)算,32位的CPU只能表示32位內(nèi)的數(shù),這里先用1位數(shù)的加法來進(jìn)行,需要的朋友可以參考下

用位運(yùn)算實(shí)現(xiàn)加法也就是計(jì)算機(jī)用二進(jìn)制進(jìn)行運(yùn)算,32位的CPU只能表示32位內(nèi)的數(shù),這里先用1位數(shù)的加法來進(jìn)行,在不考慮進(jìn)位的基礎(chǔ)上,如下

復(fù)制代碼 代碼如下:

1 + 1 = 0
1 + 0 = 1
0 + 1 = 1
0 + 0 = 0

很明顯這幾個(gè)表達(dá)式可以用位運(yùn)算的“^”來代替,如下
復(fù)制代碼 代碼如下:

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

這樣我們就完成了簡單的一位數(shù)加法,那么要進(jìn)行二位的加法,這個(gè)方法可行不可行呢?肯定是不行的,矛盾就在于,如何去
獲取進(jìn)位?要獲取進(jìn)位我們可以如下思考:
復(fù)制代碼 代碼如下:

0 + 0 = 0
1 + 0 = 0
0 + 1 = 0
1 + 1 = 1

//換個(gè)角度看就是這樣
復(fù)制代碼 代碼如下:

0 & 0 = 不進(jìn)位
1 & 0 = 不進(jìn)位
0 & 1 = 不進(jìn)位
1 & 1 = 進(jìn)位

正好,在位運(yùn)算中,我們用“<<”表示向左移動一位,也就是“進(jìn)位”。那么我們就可以得到如下的表達(dá)式
復(fù)制代碼 代碼如下:

//進(jìn)位可以用如下表示:
(x&y)<<1

到這里,我們基本上擁有了這樣兩個(gè)表達(dá)式
復(fù)制代碼 代碼如下:

x^y //執(zhí)行加法
(x&y)<<1 //進(jìn)位操作

我們來做個(gè)2位數(shù)的加法,在不考慮進(jìn)位的情況下
復(fù)制代碼 代碼如下:

11+01 = 100 // 本來的算法
// 用推算的表達(dá)式計(jì)算
11 ^ 01 = 10
(11 & 01) << 1 = 10
//到這里 我們用普通的加法去運(yùn)算這兩個(gè)數(shù)的時(shí)候就可以得到 10 + 10 = 100
//但是我們不需要加法,所以要想別的方法,如果讓兩個(gè)數(shù)再按剛才的算法計(jì)算一次呢
10 ^ 10 = 00
(10 & 10) << 1 = 100

到這里基本上就得出結(jié)論了,其實(shí)后面的那個(gè) “00” 已經(jīng)不用再去計(jì)算了,因?yàn)榈谝粋€(gè)表達(dá)式就已經(jīng)算出了結(jié)果。
繼續(xù)推理可以得出三位數(shù)的加法只需重復(fù)的計(jì)算三次得到第一個(gè)表達(dá)式的值就是計(jì)算出來的結(jié)果。
c代碼如下:
復(fù)制代碼 代碼如下:

int Add(int a,int b)
{
int jw=a&b;
int jg=a^b;
while(jw)
{
int t_a=jg;
int t_b=jw<<1;
jw=t_a&t_b;
jg=t_a^t_b;
}
return jg;
}

計(jì)算機(jī)本質(zhì)是二進(jìn)制運(yùn)算,許多高人和天書都展示了如何用位運(yùn)算來實(shí)現(xiàn)讓人糾結(jié)卻又驚奇的事情。在豆瓣上看到一篇日志描述如何用位運(yùn)算實(shí)現(xiàn)乘法,其實(shí)問題解決的關(guān)鍵是如何用位運(yùn)算實(shí)現(xiàn)加法。覺得原文敘述不夠精確,現(xiàn)總結(jié)如下。
定理1:設(shè)a,b為兩個(gè)二進(jìn)制數(shù),則a+b = a^b + (a&b)<<1。
證明:a^b是不考慮進(jìn)位時(shí)加法結(jié)果。當(dāng)二進(jìn)制位同時(shí)為1時(shí),才有進(jìn)位,因此 (a&b)<<1是進(jìn)位產(chǎn)生的值,稱為進(jìn)位補(bǔ)償。將兩者相加便是完整加法結(jié)果。
定理2:使用定理1可以實(shí)現(xiàn)只用位運(yùn)算進(jìn)行加法運(yùn)算。
證明:利用定理1中的等式不停對自身進(jìn)行迭代。每迭代一次,進(jìn)位補(bǔ)償右邊就多一位0,因此最多需要加數(shù)二進(jìn)制位長度次迭代,進(jìn)位補(bǔ)償就變?yōu)?,這時(shí)運(yùn)算結(jié)束。

相關(guān)文章

  • C++深入講解namespace與string關(guān)鍵字的使用

    C++深入講解namespace與string關(guān)鍵字的使用

    namespace命名空間或者叫名字空間,傳統(tǒng)的c++只有一個(gè)全局的namespace,namespace引入了復(fù)雜性。namespace允許像類,對象,函數(shù)聚集在一個(gè)名字下。本質(zhì)上講namespace是對全局作用域的細(xì)分
    2022-05-05
  • C語言簡單實(shí)現(xiàn)快速排序

    C語言簡單實(shí)現(xiàn)快速排序

    快速排序是一種不穩(wěn)定排序,這篇文章主要為大家詳細(xì)介紹了C語言簡單實(shí)現(xiàn)快速排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++中map和vector作形參時(shí)如何給定默認(rèn)參數(shù)?

    C++中map和vector作形參時(shí)如何給定默認(rèn)參數(shù)?

    今天小編就為大家分享一篇關(guān)于C++中map和vector作形參時(shí)如何給定默認(rèn)參數(shù)?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • C++中引用的使用總結(jié)

    C++中引用的使用總結(jié)

    以下是對C++中引用的使用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • c語言單詞本的新增、刪除、查詢按順序顯示功能

    c語言單詞本的新增、刪除、查詢按順序顯示功能

    這篇文章主要介紹了c語言單詞本的新增、刪除、查詢按順序顯示功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Qt實(shí)現(xiàn)圖片移動實(shí)例(圖文教程)

    Qt實(shí)現(xiàn)圖片移動實(shí)例(圖文教程)

    這學(xué)期實(shí)訓(xùn)的時(shí)候用MFC做過一個(gè)飛機(jī)大戰(zhàn),很無聊的東西,一直想用Qt做一個(gè);首先需要解決的問題是圖片的移動,怎么說飛機(jī)啊子彈啊都是動著的,圖片當(dāng)然要跑起來,感興趣的你可不要走開啊
    2013-01-01
  • 簡單了解C++語言中的二元運(yùn)算符和賦值運(yùn)算符

    簡單了解C++語言中的二元運(yùn)算符和賦值運(yùn)算符

    這篇文章主要介紹了C++語言中的二元運(yùn)算符和賦值運(yùn)算符,文中列出了可重載的運(yùn)算符列表,需要的朋友可以參考下
    2016-01-01
  • 一文帶你了解C語言中的0長度數(shù)組(可變數(shù)組/柔性數(shù)組)

    一文帶你了解C語言中的0長度數(shù)組(可變數(shù)組/柔性數(shù)組)

    眾所周知,?GNU/GCC?在標(biāo)準(zhǔn)的?C/C++?基礎(chǔ)上做了有實(shí)用性的擴(kuò)展,?零長度數(shù)組(Arrays?of?Length?Zero)?就是其中一個(gè)知名的擴(kuò)展,本文就來聊聊零長度數(shù)組的相關(guān)知識吧
    2023-03-03
  • 深入了解C語言結(jié)構(gòu)化的程序設(shè)計(jì)

    深入了解C語言結(jié)構(gòu)化的程序設(shè)計(jì)

    這篇文章主要介紹了C語言編程中程序的一些基本的編寫優(yōu)化技巧,文中涉及到了基礎(chǔ)的C程序內(nèi)存方面的知識,非常推薦!需要的朋友可以參考下
    2021-07-07
  • C語言函數(shù)棧幀解析

    C語言函數(shù)棧幀解析

    下面小編就為大家?guī)硪黄獪\談C語言函數(shù)調(diào)用參數(shù)壓棧的相關(guān)問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-09-09

最新評論

平邑县| 寻乌县| 嘉峪关市| 清水县| 凉城县| 麟游县| 新兴县| 上犹县| 卢龙县| 革吉县| 虞城县| 云梦县| 泾源县| 清河县| 延津县| 湘乡市| 南康市| 佛坪县| 高邮市| 合作市| 彰武县| 曲麻莱县| 宜宾县| 三门县| 凭祥市| 沾化县| 盘山县| 茶陵县| 姜堰市| 河南省| 蒲江县| 开阳县| 洛川县| 清水县| 金秀| 双牌县| 岳池县| 浪卡子县| 玛多县| 新平| 敦化市|