日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用C語言的位運(yùn)算實(shí)現(xiàn)加法操作詳解

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2021-04-13 10:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

分享本文,希望能起到拋磚引玉的作用,加深朋友對(duì)位運(yùn)算以及計(jì)算機(jī)底層的認(rèn)識(shí)。

有如下十進(jìn)制的加法運(yùn)算:

13 + 9 = 22

我們像這樣來拆分這個(gè)運(yùn)算過程:

不考慮進(jìn)位,分別對(duì)各位數(shù)進(jìn)行相加,結(jié)果為sum:

個(gè)位數(shù)3加上9為2;十位數(shù)1加上0為1;最終結(jié)果為12;

只考慮進(jìn)位,結(jié)果為carry:

3 + 9 有進(jìn)位,進(jìn)位的值為10;

如果步驟2所得進(jìn)位結(jié)果carry不為0,對(duì)步驟1所得sum,步驟2所得carry重復(fù)步驟1、 2、3;如果carry為0則結(jié)束,最終結(jié)果為步驟1所得sum:

這里即是對(duì)sum = 12 和carry = 10重復(fù)以上三個(gè)步驟,(a) 不考慮進(jìn)位,分別對(duì)各位數(shù)進(jìn)行相加:sum = 22; (b) 只考慮進(jìn)位: 上一步?jīng)]有進(jìn)位,所以carry = 0;(c) 步驟2carry = 0,結(jié)束,結(jié)果為sum = 22。

把上面的運(yùn)算過程放在二進(jìn)制中試試。

13和9的二進(jìn)制分別為:

0000 11010000 1001

①不考慮進(jìn)位,分別對(duì)各位數(shù)進(jìn)行相加得到sum:?

0000 0100

②當(dāng)考慮進(jìn)位,有兩處進(jìn)位,第0位和第3位,只考慮進(jìn)位的結(jié)果為carry:

0001 0010

③判斷carry是否為0,為0則結(jié)束,最終計(jì)算結(jié)果為sum;如果carry不為0,則進(jìn)行如下操作,并重復(fù)步驟①②③:

sum+=carry

上面步驟③中判斷carry不為0,回到步驟①:

不考慮進(jìn)位,sum+carry= :

0001 0110

步驟②:

只考慮進(jìn)位,carry =:

0

步驟③:

判斷carry為0,結(jié)束,最終sum=:

0001 0110

轉(zhuǎn)換成十進(jìn)制剛好是22,十進(jìn)制的算法同樣適用于二進(jìn)制!

仔細(xì)觀察發(fā)現(xiàn):

第①步不考慮進(jìn)位的加法其實(shí)就是異或運(yùn)算

第②步只考慮進(jìn)位就是按位與運(yùn)算之后左移一位

第③步就是重復(fù)前面兩步操作,直到第二步進(jìn)位結(jié)果為0

這里為什么要循環(huán)步驟①②③,直到步驟②所得進(jìn)位carry等于0呢?這是因?yàn)橛械臄?shù)做加法時(shí)會(huì)出現(xiàn)連續(xù)進(jìn)位的情況。在第③步檢測(cè)carry如果為0,則表示沒有進(jìn)位了,此時(shí),此次循環(huán)第①步的sum即為最終的結(jié)果。

通過位運(yùn)算實(shí)現(xiàn)加法

按照上面的分析,寫出通過位運(yùn)算實(shí)現(xiàn)加法的如下代碼:

// 遞歸寫法 int add(int num1, int num2){if(num2 == 0) return num1;int sum = num1 ^ num2;int carry = (num1 & num2) 《《 1;return add(sum, carry);}

// 迭代寫法 int add(int num1, int num2){ int sum = num1 ^ num2; int carry = (num1 & num2) 《《 1; while(carry != 0){ int a = sum; int b = carry; sum = a ^ b; carry = (a & b) 《《 1; }return sum;}
編輯:lyn

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7646

    瀏覽量

    146208
  • 位運(yùn)算
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8677

原文標(biāo)題:通過C語言的位運(yùn)算實(shí)現(xiàn)加法操作

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    高速低功耗的利器:MC10H180雙2加法器/減法器

    高速低功耗的利器:MC10H180雙2加法器/減法器 在電子設(shè)計(jì)領(lǐng)域,高速、低功耗的加法器/減法器一直是工程師們追求的目標(biāo)。今天,我們就來詳細(xì)了解一下ON Semiconductor
    的頭像 發(fā)表于 04-11 11:05 ?261次閱讀

    深入解析DM74LS83A 4二進(jìn)制快速進(jìn)位加法

    的特性、參數(shù)以及應(yīng)用場(chǎng)景。 文件下載: DM74LS83AN.pdf 一、概述 DM74LS83A能夠實(shí)現(xiàn)兩個(gè)4二進(jìn)制數(shù)的加法運(yùn)算。它為每一
    的頭像 發(fā)表于 04-10 16:45 ?709次閱讀

    深入剖析 DM74LS283:4 快速進(jìn)位二進(jìn)制加法

    二進(jìn)制加法器,它在眾多數(shù)字電路設(shè)計(jì)中發(fā)揮著重要作用。 文件下載: DM74LS283N.pdf 一、產(chǎn)品概述 DM74LS283 主要用于實(shí)現(xiàn)兩個(gè) 4 二進(jìn)制數(shù)的加法
    的頭像 發(fā)表于 04-10 16:40 ?287次閱讀

    74F583 4BCD加法器:高速運(yùn)算的理想之選

    74F583 4BCD加法器:高速運(yùn)算的理想之選 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)組
    的頭像 發(fā)表于 04-10 16:40 ?169次閱讀

    十進(jìn)制計(jì)算機(jī)算術(shù)運(yùn)算器“加法器”專利申請(qǐng)解析

    。針對(duì)每個(gè)邏輯值的運(yùn)算,不再依賴于復(fù)雜的十值或N值邏輯門,而是通過對(duì)空間上并行的多條線路,直接利用現(xiàn)有的二值邏輯元件進(jìn)行編碼連接,從而實(shí)現(xiàn)十進(jìn)制邏輯運(yùn)算與數(shù)值編碼運(yùn)算。
    的頭像 發(fā)表于 03-25 09:41 ?823次閱讀
    十進(jìn)制計(jì)算機(jī)算術(shù)<b class='flag-5'>運(yùn)算</b>器“<b class='flag-5'>加法</b>器”專利申請(qǐng)解析

    探索CD54/74AC283與CD54/74ACT283:高效4二進(jìn)制加法器的奧秘

    探索CD54/74AC283與CD54/74ACT283:高效4二進(jìn)制加法器的奧秘 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)元件之一。今
    的頭像 發(fā)表于 01-28 16:50 ?671次閱讀

    C語言主要特點(diǎn)

    。 5.語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 6.C語言允許直接訪問物理地址,能進(jìn)行(bit)操作,能夠實(shí)現(xiàn)匯編語言的大部分功能,可以直接
    發(fā)表于 01-05 07:41

    C語言中除數(shù)為0屬于什么錯(cuò)誤

    0 的錯(cuò)誤,以及援引數(shù)組元素時(shí)下標(biāo)溢出等。 靜態(tài)錯(cuò)誤又可以分為語法錯(cuò)誤和靜態(tài)語義錯(cuò)誤。語法錯(cuò)誤指有關(guān)語言結(jié)構(gòu)上的錯(cuò)誤,如單詞拼寫錯(cuò)誤、表達(dá)式中缺少操作數(shù)、括號(hào)不匹配等。靜態(tài)語義錯(cuò)誤指語言意義上錯(cuò)誤,如
    發(fā)表于 12-08 06:38

    為什么單片機(jī)還在用C語言編程?

    使用加法、減法、移位運(yùn)算,不要過多的使用乘法除法,因?yàn)槌朔ê统?b class='flag-5'>運(yùn)算會(huì)非常耗時(shí)間,特別是除法,會(huì)耗費(fèi)很多時(shí)間,這對(duì)于運(yùn)算速度本身就有限制的單片機(jī)來說,是一個(gè)非常大的負(fù)擔(dān)。 二、高級(jí)
    發(fā)表于 11-28 07:37

    請(qǐng)問如何用C語言列舉當(dāng)前所有網(wǎng)口?

    何用C語言列舉當(dāng)前所有網(wǎng)口?
    發(fā)表于 11-25 07:23

    C語言操作

    C 語言操作符包括按與( )、按或(|)、按
    發(fā)表于 11-21 07:52

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    ,該模塊對(duì)應(yīng)于 C 語言加法運(yùn)算符。還有連接 ALU8 以及各個(gè)端口的 wire 部件等。 從 begin 到 end 部分,包含了整個(gè)函數(shù)實(shí)現(xiàn)
    發(fā)表于 10-30 07:02

    第4章 C語言基礎(chǔ)以及流水燈的實(shí)現(xiàn)(4.3 4.4)

    4.3 C語言基本運(yùn)算符 小學(xué)數(shù)學(xué)學(xué)過加、減、乘、除等運(yùn)算符號(hào)以及四則混合運(yùn)算,而這些運(yùn)算符號(hào)在
    的頭像 發(fā)表于 10-29 15:30 ?448次閱讀

    e203乘法運(yùn)算結(jié)構(gòu)及算法原理

    乘法運(yùn)算。 考慮到E203的定位以及性能、功耗與芯片面積的平衡,E203采用了一些恰到好處的資源復(fù)用設(shè)計(jì)。 首先,乘法器每周器中的加法操作是通過復(fù)用ALU中的加法
    發(fā)表于 10-22 06:43

    e203 ALU乘法運(yùn)算結(jié)構(gòu)及算法原理

    乘法運(yùn)算。 考慮到E203的定位以及性能、功耗與芯片面積的平衡,E203采用了一些恰到好處的資源復(fù)用設(shè)計(jì)。 首先,乘法器每周器中的加法操作是通過復(fù)用ALU中的加法
    發(fā)表于 10-22 06:12
    湘西| 宁陕县| 东海县| 远安县| 嘉善县| 来安县| 武城县| 德保县| 蒙阴县| 化州市| 江北区| 什邡市| 遵义县| 宝山区| 宜都市| 仪陇县| 潍坊市| 石嘴山市| 称多县| 石首市| 卢氏县| 施甸县| 漯河市| 柳河县| 海晏县| 铜山县| 弥勒县| 吉水县| 久治县| 黎平县| 富阳市| 黑山县| 龙口市| 大余县| 焉耆| 南阳市| 盖州市| 蒲江县| 宁都县| 金门县| 新邵县|