亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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)位的情況。在第③步檢測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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7638

    瀏覽量

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

    關(guān)注

    0

    文章

    17

    瀏覽量

    8637

原文標(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)推薦

    復(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

    自寫計(jì)算IP思路以及源碼

    所得的乘法結(jié)果之間的位差是2,所以疊加時(shí)會(huì)有2的重疊,這里我采用了錯(cuò)位拼接最后再整體相加的方式規(guī)避了重疊的問題,即間隔4的乘法結(jié)果可以直接拼接,求和時(shí)不會(huì)有對(duì)應(yīng)
    發(fā)表于 10-30 06:15

    第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 ?121次閱讀

    定點(diǎn)數(shù)表示實(shí)數(shù)的方法以及定點(diǎn)數(shù)在硬件上的運(yùn)算驗(yàn)證

    ,Vivado就能將后續(xù)有符號(hào)數(shù)運(yùn)算綜合成相應(yīng)電路(與C語言不同,Verilog規(guī)定,無符號(hào)數(shù)與有符號(hào)數(shù)運(yùn)算,會(huì)將有符號(hào)數(shù)視為無符號(hào)數(shù))。以下述RTL代碼所示有符號(hào)Q15定點(diǎn)數(shù)乘法為例
    發(fā)表于 10-28 08:13

    RSA加速實(shí)現(xiàn)思路

    工作交給軟件實(shí)現(xiàn)。 3 關(guān)于硬件實(shí)現(xiàn)與仿真 圖1蒙哥馬利模乘電路結(jié)構(gòu) 圖1所示電路可以實(shí)現(xiàn)1024bits模乘運(yùn)算,主要特征包括: ①使用32
    發(fā)表于 10-28 07:28

    E203V2長周期乘法器核心booth算法解讀

    E203V2的數(shù)據(jù)通道中的加法運(yùn)算單元可得加法器的輸入沒有進(jìn)位,而進(jìn)行減法器運(yùn)算時(shí),進(jìn)位輸入為1,此時(shí)完美解決了-A和-2A的問題,只需將運(yùn)算
    發(fā)表于 10-24 09:33

    RVB 操作指令集擴(kuò)展(一)

    一、B擴(kuò)展簡介 B擴(kuò)展,即bit-manipulation (bitmanip) extension,主打增強(qiáng)操作的指令集。B擴(kuò)展定義了RV32-64下的操作指令。為了更精準(zhǔn)地在領(lǐng)
    發(fā)表于 10-22 08:11

    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

    全套C語言培訓(xùn)資料—PPT課件

    與共用體、運(yùn)算、文件 全套C語言培訓(xùn)資料,共427頁,13個(gè)章節(jié):C語言概述、程序的靈魂—算
    發(fā)表于 03-12 14:50

    Verilog中signed和$signed()的用法

    嗎?其實(shí)不是的,因?yàn)橛蟹?hào)數(shù)和無符號(hào)數(shù)據(jù)的加法強(qiáng)結(jié)果和乘法器結(jié)構(gòu)是一樣的,signed的真正作用是決定如何對(duì)操作數(shù)擴(kuò)的問題。 2、verilog中的加法和乘法
    的頭像 發(fā)表于 02-17 17:47 ?1109次閱讀
    Verilog中signed和$signed()的用法

    精密空調(diào)操作使用方法詳解

    精密空調(diào)操作使用方法詳解
    的頭像 發(fā)表于 02-10 14:44 ?1690次閱讀
    精密空調(diào)<b class='flag-5'>操作</b>使用方法<b class='flag-5'>詳解</b>

    FPGA中的浮點(diǎn)四則運(yùn)算是什么

    (減)法運(yùn)算 基于FPGA 實(shí)現(xiàn)的浮點(diǎn)加法運(yùn)算包括了一系列對(duì)尾數(shù)和指數(shù)部分的操作:移位、交換、格式化、舍入和格式化等。如下圖所示,自定義浮點(diǎn)
    的頭像 發(fā)表于 11-16 12:51 ?1204次閱讀
    FPGA中的浮點(diǎn)四則<b class='flag-5'>運(yùn)算</b>是什么

    FPGA中浮點(diǎn)四則運(yùn)算實(shí)現(xiàn)過程

    (減)法運(yùn)算 基于FPGA 實(shí)現(xiàn)的浮點(diǎn)加法運(yùn)算包括了一系列對(duì)尾數(shù)和指數(shù)部分的操作:移位、交換、格式化、舍入和格式化等。如下圖所示,自定義浮點(diǎn)
    的頭像 發(fā)表于 11-16 11:19 ?1880次閱讀
    FPGA中浮點(diǎn)四則<b class='flag-5'>運(yùn)算</b>的<b class='flag-5'>實(shí)現(xiàn)</b>過程

    使用C語言實(shí)現(xiàn)函數(shù)模板

      用C語言能不能實(shí)現(xiàn)一個(gè)通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點(diǎn)數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?1178次閱讀