一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

跟大家分享位運(yùn)算的幾個(gè)使用小技巧

冬至配餃子 ? 來源:最后一個(gè)bug ? 作者:bug菌 ? 2022-07-28 11:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天跟大家分享位運(yùn)算的幾個(gè)使用小技巧,這些巧妙操作都是要在項(xiàng)目開發(fā)或者學(xué)習(xí)中不斷積累的,如果你在后續(xù)的編碼中用上的話,不僅能夠提高代碼效率,還能為你的代碼增色不少。

1、替代乘除2

這一點(diǎn)應(yīng)該是基本操作了,我也在往期的文章中提到過多次。

poYBAGLh_p-AImFvAAA2W5GUlrE647.png

特別是常用定點(diǎn)MCU的朋友,相信一點(diǎn)更是有自己的領(lǐng)悟,即使所使用的MCU帶有硬件浮點(diǎn)運(yùn)算功能,采用整形定點(diǎn)運(yùn)算也經(jīng)常用來提高運(yùn)算速度。

2、異或交換兩數(shù)

也就是我們面試題中常提到的,不用第三個(gè)變量交換兩個(gè)數(shù):

pYYBAGLh_riAS7SuAAAifY87VMI082.png

3、判斷兩數(shù)是否同號

大部分朋友判斷兩個(gè)不為0的數(shù)是否同號都是采用兩數(shù)相乘是否>0來進(jìn)行判斷,當(dāng)然我也見過如下寫法的:

pYYBAGLh_tGAIYCpAAAl5rOKOVI627.png

雖然兩種最終的結(jié)果,但總讓人覺得有點(diǎn)太初級、太累贅的感覺,所以代碼還是要寫得優(yōu)雅,才讓人覺得你有點(diǎn)東西。

如果你稍加處理借用異或運(yùn)算來進(jìn)行判斷,會給人眼前一亮的感覺。

poYBAGLh_uKAQV2tAAAO2YTQSA0647.png

然而更重要的是相對乘法運(yùn)算,其速度更快。

4、判斷奇偶數(shù)

判斷奇偶數(shù)無非就是識別該數(shù)是否能夠被2整除,通常我們采用如下表達(dá)式:

pYYBAGLh_vmAEkGqAAANv2fRzT8353.png

既然本文介紹位運(yùn)算,又存在某種位運(yùn)算會更加高效:

poYBAGLh_yWAEqzlAAARc6-maaI723.png

其無非就是利用了奇偶整形數(shù)的二進(jìn)制最后一位是否為1來進(jìn)行區(qū)分。

4、實(shí)現(xiàn)絕對值

實(shí)現(xiàn)絕對值還不簡單?abs用起來。

如果要不用條件語句實(shí)現(xiàn)絕對值功能,你會如何實(shí)現(xiàn)呢?

以8位整形數(shù)為例說明一下其實(shí)現(xiàn),其他字長的整形類似處理:

poYBAGLh_z2AIu5OAAAU1x_YFBQ428.png

這里也算是異或的應(yīng)用吧,異或操作"相同為0,相異為1",假如a是一個(gè)有符號正數(shù)整數(shù),a^0仍然為a,所以如上表達(dá)式對于整數(shù)仍然為原數(shù)。

而當(dāng)a是一個(gè)有符號負(fù)值整形數(shù),要實(shí)現(xiàn)abs功能,勢必要“對原數(shù)取反+1“,然而巧妙的是a^0xFF剛好是對a取反,-(a>>7)則剛好是+1。

屬實(shí)巧妙,不禁有點(diǎn)喜歡上了異或操作運(yùn)算。



審核編輯:劉清

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

    關(guān)注

    146

    文章

    17984

    瀏覽量

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

    關(guān)注

    0

    文章

    17

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    PKA外設(shè)RSA模冪運(yùn)算2048計(jì)算結(jié)果和在線工具計(jì)算的不一樣是怎么回事?

    參照STM32WLE5的官方PKA例程,2048的模密運(yùn)算結(jié)果和在線工具計(jì)算的結(jié)果不一樣,有遇到類似情況的朋友嗎
    發(fā)表于 03-10 07:28

    運(yùn)算放大器速成課程第2部分:關(guān)鍵參數(shù)教程

    電路設(shè)計(jì)人員根據(jù)幾個(gè)器件參數(shù)選擇運(yùn)算放大器。這些參數(shù)必須滿足運(yùn)算放大器應(yīng)用的要求。下面列出了最??紤]的參數(shù)。本教程的第2部分解釋了它們的定義和用途。
    的頭像 發(fā)表于 02-20 18:22 ?587次閱讀
    <b class='flag-5'>運(yùn)算</b>放大器速成課程第2部分:關(guān)鍵參數(shù)教程

    ADS1262有效是多少?

    這ADS1262的有效32宣稱差太遠(yuǎn)了吧?看不到ADS1262那里有數(shù)據(jù)證明達(dá)到32ENOB,不知道是不是理解錯(cuò)有效
    發(fā)表于 01-10 10:17

    用ad1246采集數(shù)據(jù),參考電壓2.5V有幾個(gè)問題請教

    現(xiàn)用ad1246采集數(shù)據(jù),參考電壓2.5V,有幾個(gè)問題請教。 使用時(shí)需要對ad進(jìn)行標(biāo)定嗎?是不是發(fā)送幾個(gè)命令就行了,最后AD輸出的結(jié)果就是最終的二進(jìn)制數(shù)據(jù)(對應(yīng)下圖的Final output
    發(fā)表于 12-26 07:13

    請問有沒有ADS5404匹配的運(yùn)算放大器型號推薦呢?

    想使用ADS5404(ADS5402)自制一塊板卡,前端的2路采集信號輸入功率較小,想通過運(yùn)算放大,請問有沒有ADS5404匹配的運(yùn)算放大器型號推薦呢?
    發(fā)表于 12-11 07:18

    4G模組Air780E的LuatOS開發(fā)之運(yùn)算(bit)示例

    本文我要說的是低功耗4G模組Air780E的LuatOS開發(fā),關(guān)于運(yùn)算(bit)示例,我將詳細(xì)解析分享給大家。
    的頭像 發(fā)表于 12-02 14:33 ?523次閱讀
    4G模組Air780E的LuatOS開發(fā)之<b class='flag-5'>位</b><b class='flag-5'>運(yùn)算</b>(bit)示例

    Air780E模組LuatOS開發(fā)的運(yùn)算(bit)教程篇!

    本次我們要學(xué)習(xí)的是4G模組Air780E的LuatOS開發(fā),關(guān)于運(yùn)算(bit)教程分享給大家。
    的頭像 發(fā)表于 11-26 11:58 ?535次閱讀
    Air780E模組LuatOS開發(fā)的<b class='flag-5'>位</b><b class='flag-5'>運(yùn)算</b>(bit)教程篇!

    Verilog語法中運(yùn)算符的用法

    verilog語法中使用以下兩個(gè)運(yùn)算符可以簡化我們的選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?2566次閱讀
    Verilog語法中<b class='flag-5'>運(yùn)算</b>符的用法

    技術(shù)干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析運(yùn)算符與優(yōu)先級

    在C語言的學(xué)習(xí)過程中,運(yùn)算符的使用是不可忽視的重要環(huán)節(jié)。本文將繼續(xù)深入探討C語言中的運(yùn)算符,重點(diǎn)介紹運(yùn)算符、賦值運(yùn)算符及其優(yōu)先級。掌握這些
    的頭像 發(fā)表于 10-13 08:09 ?637次閱讀
    技術(shù)干貨驛站 ▏解鎖C語言高效編程秘訣:深入解析<b class='flag-5'>運(yùn)算</b>符與優(yōu)先級

    TAS5825音量控制運(yùn)算寬是多少,是32bit嗎?

    對于dsp運(yùn)算控制音量可能會有損音質(zhì),大概32bit運(yùn)算在小音量是會有幾db音質(zhì)損失。 所以我想知道,TAS5825 音量控制運(yùn)算寬是多少,是32bit?TI miniDSP產(chǎn)品中
    發(fā)表于 10-11 06:43

    比較器與運(yùn)算放大器件選型應(yīng)用優(yōu)勢介紹

    場景卻各具特色。英銳恩科技小編大家深入探討比較器與運(yùn)算放大器件的基本原理、關(guān)鍵技術(shù)差異及各自的應(yīng)用優(yōu)勢,以期為電子工程師提供有價(jià)值的參考。 一、基本原理概述 1. 比較器(Comparator) 比較
    發(fā)表于 09-30 09:05

    51單片機(jī)(一款國產(chǎn)8高性能Flash的接近感應(yīng)單片機(jī)XD08M3232體驗(yàn)感)

    大家推薦一款在淘寶上發(fā)現(xiàn)的國產(chǎn)A/D型具有增強(qiáng)型1T8051內(nèi)核8高性能Flash的接近感應(yīng)單片機(jī)XD08M3232,測試下來總體的感覺還是比較強(qiáng)大的,以下是本人試用后總結(jié)下來比較滿意的幾個(gè)點(diǎn)
    發(fā)表于 09-25 15:15

    MATLAB(4)--MATLAB基本運(yùn)算

    算術(shù)運(yùn)算 基本算術(shù)運(yùn)算符:+(加)、-(減)、*(乘)、/(右除)、(左除)、^(乘方)。 MATLAB的運(yùn)算是在矩陣意義下運(yùn)行的。 單個(gè)數(shù)據(jù)的算術(shù)運(yùn)算只是矩陣
    發(fā)表于 09-06 10:18

    使用運(yùn)算放大器應(yīng)注意哪幾個(gè)問題

    以下是使用運(yùn)算放大器時(shí)應(yīng)注意的幾個(gè)關(guān)鍵問題: 運(yùn)算放大器的基本原理 : 運(yùn)算放大器是一種高增益、多用途的電子設(shè)備,廣泛應(yīng)用于信號放大、濾波、積分和微分等電路中。 了解其基本結(jié)構(gòu),包括輸
    的頭像 發(fā)表于 08-06 14:26 ?969次閱讀

    ST TSB952高速雙路運(yùn)算放大器簡介

    本期 DigiKey Daily 向大家推薦一款產(chǎn)品——ST的TSB952 高速雙路運(yùn)算放大器。
    的頭像 發(fā)表于 08-01 10:08 ?1026次閱讀