在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解嵌入式位運算

CHANBAEK ? 來源:南山府嵌入式 ? 作者:編外人員 ? 2023-04-13 15:53 ? 次閱讀

敘述:

嵌入式位運算是嵌入式系統中常用的優化技巧之一,它可以通過位運算操作來實現一些常見的數學運算、邏輯運算等,從而提高程序的執行效率。

本文就這方面進行介紹。

我個人認為,位操作就是取、刪、反、移位、清空、切換等這些,但是在實際中因為對這方面的理解不夠透徹,導致在寫代碼時,不知道怎么操作。

位移運算

位移運算包括左移運算和右移運算,通過將二進制數的位向左或向右移動指定的位數,可以實現快速的乘以或除以2的冪次方操作。 例如,將一個整數向左移動3位,相當于將其乘以2的3次方(即8),將一個整數向右移動2位,相當于將其除以2的2次方(即4)。

1int x = 10;  // 聲明一個整數變量 x,初始值為 10
2int y = x << 3;  // 將 x 左移 3 位,相當于乘以 8
3int z = x >> 2;  // 將 x 右移 2 位,相當于除以 4

位與運算

位與運算是對兩個數的每個二進制位進行邏輯與操作,如果兩個相應的二進制位都為1,則該位的結果為1,否則為0。 位與運算常用于掩碼操作、判斷奇偶性等。

1int x = 0x0F;  // 聲明一個整數變量 x,初始值為 0x0F(二進制為 0000 11112int y = 0x03;  // 聲明一個整數變量 y,初始值為 0x03(二進制為 0000 00113int z = x & y;  // 對 x 和 y 進行位與運算,結果為 0000 0011(十進制為 3

位或運算

位或運算是對兩個數的每個二進制位進行邏輯或操作,如果兩個相應的二進制位中至少有一個為1,則該位的結果為1,否則為0。 位或運算常用于設置標志位、合并掩碼等。

1int x = 0x0F;  // 聲明一個整數變量 x,初始值為 0x0F(二進制為 0000 11112int y = 0x03;  // 聲明一個整數變量 y,初始值為 0x03(二進制為 0000 00113int z = x | y;  // 對 x 和 y 進行位或運算,結果為 0000 1111(十進制為 15

位異或運算

位異或運算是對兩個數的每個二進制位進行邏輯異或操作,如果兩個相應的二進制位不相同,則該位的結果為1,否則為0。 位異或運算常用于取反標志位、差分數據傳輸等。

1int x = 0x0F;  // 聲明一個整數變量 x,初始值為 0x0F(二進制為 0000 11112int y = 0x03;  // 聲明一個整數變量 y,初始值為 0x03(二進制為 0000 00113int z = x ^ y;  // 對 x 和 y 進行位異或運算,結果為 0000 1100(十進制為 12

位取反運算

位取反運算是對一個數的每個二進制位進行邏輯取反操作,即將1變為0,0變為1。 位取反運算常用于反轉標志位、取反掩碼等。

1int x = 0x0F;  // 聲明一個整數變量 x,初始值為 0x0F(二進制為 0000 11112int y = ~x;  // 對 x 進行位取反運算,結果為 1111 0000(十進制為 -16

位域操作

位域是一種將一個或多個字段打包到一個單一的機器字中的數據結構。 位域可以有效地壓縮存儲空間,并且可以提高程序的執行效率。 位域常用于控制寄存器、狀態寄存器等。

1struct {
2    unsigned char a : 4;  // 定義一個 4 位的無符號整數字段 a
3    unsigned char b : 3;  // 定義一個 3 位的無符號整數字段 b
4    unsigned char c : 1;  // 定義一個 1 位的無符號整數字段 c
5} bitfield;
6
7bitfield.a = 5;  // 設置字段 a 的值為 5(二進制為 01018bitfield.b = 2;  // 設置字段 b 的值為 2(二進制為 0109bitfield.c = 1;  // 設置字段 c 的值為 1(二進制為 1

清除位:

可以使用位運算符將特定的位設置為0。 例如,如果需要清除一個8位字節的最高位,可以使用以下代碼:

1unsigned char byte = 0xFF;
2byte &= 0x7F; // Clear the highest bit

設置位:

可以使用位運算符將特定的位設置為1。 例如,如果需要將一個8位字節的第4位設置為1,可以使用以下代碼:

1unsigned char byte = 0x00;
2byte |= 0x10; // Set the 4th bit

反轉位:

可以使用位運算符將特定的位取反。 例如,如果需要反轉一個8位字節的所有位,可以使用以下代碼:

1unsigned char byte = 0x55;
2byte ^= 0xFF; // Invert all bits

檢查位:

可以使用位運算符檢查特定的位是否設置為1或0。 例如,如果需要檢查一個8位字節的第2位是否為1,可以使用以下代碼:

1unsigned char byte = 0x04;
2if (byte & 0x02) {
3    // The 2nd bit is set
4} else {
5    // The 2nd bit is not set
6}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5088

    文章

    19158

    瀏覽量

    306484
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120813
  • 二進制
    +關注

    關注

    2

    文章

    795

    瀏覽量

    41703
  • 代碼
    +關注

    關注

    30

    文章

    4809

    瀏覽量

    68825
  • 位運算
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8444
收藏 人收藏

    評論

    相關推薦

    ARM嵌入式Linux系統開發詳解

    了Linux技術的*發展,全部采用當前最流行和穩定的Linux發行版或者相關工具,是Linux愛好者學習Linux的好幫手。《Linux典藏大系:ARM嵌入式Linux系統開發詳解(第2版)》是獲得了
    發表于 09-14 08:57

    ARM嵌入式的GPIO綁定的計算方式詳解

    ARM嵌入式的GPIO綁定的計算方式詳解
    發表于 12-14 06:38

    嵌入式C語言運算的相關資料推薦

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔@[TOC]嵌入式C語言的運算、pandas是什么?1.與運算“&” 按
    發表于 12-15 07:22

    運算嵌入式編程制轉換

    程序員面試寶典筆記4-運算嵌入式編程制轉換嵌入式編程static
    發表于 12-21 08:16

    嵌入式單片機開發中的常用運算有哪些

    嵌入式單片機開發中的常用運算有哪些?
    發表于 01-19 06:55

    嵌入式liunx開發技術詳解

    嵌入式liunx開發技術詳解主要內容本書以嵌入式Linux 系統開發流程為主線,剖析了嵌入式Linux 系統構建的各個環節。從嵌入式系統基礎
    發表于 03-04 16:58 ?55次下載

    嵌入式系統的知識平臺與平臺模式詳解

    嵌入式系統的知識平臺與平臺模式詳解 知識經濟的時代是個以知識平臺為中心的市場經濟時代。嵌入式系統領域的產業、科技,已從資本經濟時代封閉
    發表于 03-29 15:09 ?935次閱讀

    嵌入式Linux內核移植詳解(頂嵌)

    嵌入式內核移植步驟詳解 含配置含義及內容等方面
    發表于 11-20 16:00 ?19次下載

    基于嵌入式Linux應用程序開發詳解

    基于嵌入式Linux應用程序開發詳解
    發表于 10-25 14:17 ?12次下載
    基于<b class='flag-5'>嵌入式</b>Linux應用程序開發<b class='flag-5'>詳解</b>

    詳解嵌入式linux 啟動信息

    詳解嵌入式linux 啟動信息
    發表于 10-30 10:28 ?11次下載
    <b class='flag-5'>詳解</b><b class='flag-5'>嵌入式</b>linux 啟動信息

    單片機和嵌入式的關系讀懂

    其實,嵌入式跟單片機真的沒有多大的聯系,想搞嵌入式的,就認真學好大學課程。 (1)單片機   單片機基本結構單片機由運算器、控制器、存儲器、輸入輸出設備構成。 (2)嵌入式  
    的頭像 發表于 11-20 13:57 ?7174次閱讀

    了解嵌入式

    嵌入式系統是種專用的計算機系統,作為裝置或設備的部分。通常,嵌入式系統是個控制程序存儲在ROM中的
    發表于 02-12 09:33 ?5900次閱讀

    嵌入式詳解

    嵌入式詳解(stm32嵌入式開發實例)-嵌入式詳解,有需要的可以參考!
    發表于 07-30 16:07 ?64次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>詳解</b>

    (網盤)ARM嵌入式Linux系統開發詳解

    (網盤)ARM嵌入式Linux系統開發詳解(python嵌入式開發 - csdn博客)-(網盤)ARM嵌入式Linux系統開發詳解,分享給大
    發表于 08-04 12:35 ?74次下載
    (網盤)ARM<b class='flag-5'>嵌入式</b>Linux系統開發<b class='flag-5'>詳解</b>

    嵌入式C之操作的應用

    嵌入式運算嵌入式系統中常用的優化技巧之,它可以通過位運算操作來實現
    發表于 05-20 16:52 ?748次閱讀
    主站蜘蛛池模板: 天天做天天爱夜夜爽毛片毛片 | 全部在线播放免费毛片 | 日本最好的免费影院 | 亚洲午夜在线视频 | 一级特级aaa毛片 | 中文字幕 亚洲一区 | 手机看片国产在线 | 成人宗合网| 天堂成人精品视频在线观 | 手机在线观看你懂的 | 91福利网站 | 嫩草影院播放地址一二三 | 特黄特黄特色大片免费观看 | 五月天婷婷在线观看高清 | 高h乱肉辣文辣书阁 | 最近免费 | 日本aaaa级毛片在线看 | 精品欧美小视频在线观看 | 337p亚洲精品色噜噜狠狠 | 888米奇在线视频四色 | 国产特黄一级片 | 亚洲乱亚洲乱妇41p 亚洲乱亚洲乱妇41p国产成人 | 在线毛片网站 | 全黄h全肉边做边吃奶在线观看 | 美女被免费网站视频九色 | 免费看一级毛片 | 夜夜穞狠狠穞 | 色婷婷色综合缴情在线 | 男人扒开美女尿口无遮挡图片 | 一区二区视屏 | 色天使色护士 | 成人a毛片高清视频 | 极品国产一区二区三区 | 免费一级毛片不卡在线播放 | 国产一级特黄在线播放 | 求av网站| 狠狠色依依成人婷婷九月 | 天堂在线视频观看 | 亚洲黄色性视频 | 亚洲欧洲一区二区三区在线 | se94se亚洲欧美在线 |