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

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

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

什么是按位運(yùn)算符

汽車電子技術(shù) ? 來源:OpenFPGA ? 作者:碎碎思 ? 2023-02-09 15:44 ? 次閱讀

數(shù)字硬件建模SystemVerilog-按位運(yùn)算符

圖片

經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式和運(yùn)算符。

馬上HDLBits-SystemVerilog版本也開始準(zhǔn)備了,基本這一部分完成后就開始更新~

圖片

介紹

(按)位運(yùn)算符(Bitwise operators)

位運(yùn)算符一次執(zhí)行一位操作,從最右邊的位(最低有效位)向最左邊的位(最高有效位)移動。表5-3列出了按位運(yùn)算符功能。

表5-3:RTL建模的位運(yùn)算符| 運(yùn)算符 | 示例用法 | 描述 |

| ---------- | ---------- | ---------------------------- |

| ~ | ~m | 將m(1的補(bǔ)碼)的每一位反轉(zhuǎn) |

| & | m&n | m和n的每一位相與(AND) |

| ^ | m ^ n | m與n的每一位相異或(XOR) |

| ^ 或者 ^ | m ^~n | m和n的每一位相同或 |

| I | mIn | m和n的每一位相或(OR) |

(I代表 | - 或操作)

沒有位NAND或NOR運(yùn)算符。NAND或NOR操作是分別反轉(zhuǎn)AND或OR操作的結(jié)果,如~(m&n)。需要括號,以便先執(zhí)行AND運(yùn)算。

位運(yùn)算要求兩個操作數(shù)的向量大小相同。在執(zhí)行操作之前,較小的操作數(shù)將擴(kuò)展以匹配較大操作數(shù)的大小。

(按)位反轉(zhuǎn)

按位反轉(zhuǎn)(Bitwise inversion.)。位反轉(zhuǎn)運(yùn)算符將其單個操作數(shù)的每一位反轉(zhuǎn),從右向左操作,結(jié)果是操作數(shù)值的一個補(bǔ)數(shù)。位反轉(zhuǎn)運(yùn)算符是X-pessimistic-反轉(zhuǎn)X或Z值的結(jié)果始終是X。表5-4顯示了位反轉(zhuǎn)的真值表。表中的結(jié)果針對操作數(shù)的每一位。

表5-4:位反轉(zhuǎn)真值表| ~ | 結(jié)果 |

| --- | ------ |

| 0 | 1 |

| 1 | 0 |

| X | X |

| Z | X |

位反轉(zhuǎn)操作的一個示例結(jié)果是:

圖片

(按)位AND

按位和(Bitwise AND)。位AND運(yùn)算符對第一個操作數(shù)的每一位與第二個操作數(shù)中的對應(yīng)位進(jìn)行布爾AND運(yùn)算,從右到左運(yùn)算。位AND運(yùn)算符是X-optimistic:0與任何值的AND運(yùn)算都將得到0。表5-5顯示了位AND的真值表。表中的結(jié)果針對兩個操作數(shù)的每一位。

表5-5:位AND真值表圖片

位AND運(yùn)算的一些示例結(jié)果如下:

圖片

(按)位OR

按位或(Bitwise OR)。位OR運(yùn)算符對第一個操作數(shù)的每一位與第二個操作數(shù)中的對應(yīng)位進(jìn)行布爾OR運(yùn)算,從右向左進(jìn)行運(yùn)算。位OR運(yùn)算符是X-optimistic-與任何值進(jìn)行OR運(yùn)算結(jié)果都是1。表5-6顯示了位OR的真值表。

表5-6:位OR真值表圖片

按位OR運(yùn)算的一些結(jié)果示例如下:

圖片

圖片

(按)位XOR

按位異或(Bitwise XOR)。位XOR運(yùn)算符對第一個操作數(shù)的每一位與第二個操作數(shù)的對應(yīng)位進(jìn)行布爾異或XOR運(yùn)算,從右到左進(jìn)行運(yùn)算。按位異或運(yùn)算符為X-pessimistic——對X或Z值進(jìn)行異或運(yùn)算的結(jié)果始終為X。表5-7顯示了按位異或的真值表。

表5-7:按位異或真值表圖片

按位異或運(yùn)算的一些示例結(jié)果如下:

圖片

(按)位XNOR

按位XNOR(Bitwise XNOR)。位XNOR運(yùn)算符對第一個操作數(shù)的每一位與第二個操作數(shù)的對應(yīng)位進(jìn)行布爾XNOR運(yùn)算,從右到左進(jìn)行運(yùn)算。位XNOR運(yùn)算符為X-pessimistic ——對X或Z值進(jìn)行XNOR運(yùn)算的結(jié)果為X。表5-8顯示了按位XNOR的真值表。

表5-8:按位XNOR真值表圖片

按位XNOR運(yùn)算的一些示例結(jié)果如下:

圖片

示例5-5說明了一個利用按位運(yùn)算符的小型RTL模型。

示例5-5:使用按位運(yùn)算符:多路N位寬和/異或操作

//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords

// User-defined type definitions
package definitions_pkg;
 typedef enum logic {AND_OP, XOR_OP} mode_t;
endpackage: definitions_pkg

// Multiplexed N-bit wide bitwise-AND or bitwise-XOR operation
module and_xor
import definitions_pkg::*;
#(parameter N = 4)            // op size (default 8-bits)
(input  mode_t        mode,   // 1-bit enumerated input
input  logic [N-1:0] a, b,   // scalable input size
output logic [N-1:0] result  // scalable output size
);
 timeunit 1ns; timeprecision 1ns;

 always_comb
   case (mode)
     AND_OP: result = a & b;
     XOR_OP: result = a ^ b;
   endcase
endmodule: and_xor
//`end_keywords

圖5-5顯示了示例5-5中的RTL模型綜合結(jié)果,如上一節(jié)前面所述,綜合創(chuàng)建的實(shí)現(xiàn)可能受到多個因素的影響,包括:目標(biāo)設(shè)備、與運(yùn)算符一起使用的任何其他運(yùn)算符或編程語句、使用的綜合編譯器以及指定的綜合選項(xiàng)和約束。

<center>圖5-5:示例5-5的綜合結(jié)果:按位AND和OR運(yùn)算center>

圖片

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

    關(guān)注

    16

    文章

    1661

    瀏覽量

    135881
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    167

    瀏覽量

    11036
  • and
    and
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    7228
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字硬件建模SystemVerilog-運(yùn)算符

    經(jīng)過幾周的更新,SV核心部分用戶自定義類型和包內(nèi)容已更新完畢,接下來就是RTL表達(dá)式和運(yùn)算符。
    的頭像 發(fā)表于 08-12 14:27 ?2384次閱讀

    C語言 第2章 順序結(jié)構(gòu) 2-5-24 運(yùn)算符

    C語言
    電子學(xué)習(xí)
    發(fā)布于 :2022年12月27日 19:22:01

    STC12C2052AD做的手機(jī)電池充電器程序

    優(yōu)先級 右結(jié)合  ! 邏輯非運(yùn)算符   ~ 取反運(yùn)算符  ++ 自增運(yùn)算符  -- 自減運(yùn)算符
    發(fā)表于 03-14 09:10

    C語言優(yōu)先級口訣

    的是取反運(yùn)算符~,增減指的是自增和自減運(yùn)算符++和--,富指的是負(fù)號運(yùn)算符-,強(qiáng)指的是類型轉(zhuǎn)換運(yùn)算符
    發(fā)表于 03-22 09:18

    C語言入門經(jīng)典(第四版)

    基本數(shù)據(jù)類型 553.1 運(yùn)算符的優(yōu)先級和相關(guān)性 553.2 運(yùn)算符 573.2.1 移位運(yùn)算符 583.2.2 使用
    發(fā)表于 06-11 12:58

    【通信專欄】附錄一:STM32單片機(jī)C語言基礎(chǔ)/邏輯運(yùn)算/運(yùn)算/結(jié)構(gòu)體/宏定義 精選資料分享

    在單片機(jī)開發(fā)中,總有一些C語言基礎(chǔ)知識是常常用到的而我們又不易掌握的,今天以STM32單片機(jī)為例,總結(jié)一下那些常用的C語言基礎(chǔ)知識,例如邏輯運(yùn)算符,結(jié)構(gòu)體,宏定義以及運(yùn)算符。邏輯
    發(fā)表于 07-21 08:28

    2.7 python運(yùn)算符

    ;> a5>>> a -= 2>>> a34. Python運(yùn)算符運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的。Python中的
    發(fā)表于 02-21 16:43

    STM32運(yùn)算運(yùn)算符學(xué)習(xí)記錄

    學(xué)習(xí)過程中的一些疑問記錄一下,方便自己復(fù)習(xí)(多數(shù)內(nèi)容為轉(zhuǎn)載,自己心得部分)STM32學(xué)習(xí)一、運(yùn)算運(yùn)算符(&)參加
    發(fā)表于 02-25 06:21

    分享關(guān)于操作一些筆記

    分享關(guān)于操作一些筆記:一、操作簡單介紹首先,以下是運(yùn)算符:在嵌入式編程中,常常需要對一些寄存器進(jìn)行配置,有的情況下需要改變一個字節(jié)中
    發(fā)表于 02-25 08:01

    數(shù)字硬件建模SystemVerilog-歸約運(yùn)算符

    介紹歸約運(yùn)算符對單個操作數(shù)的所有執(zhí)行運(yùn)算,并返回標(biāo)量(1)結(jié)果。表5-9列出了歸約運(yùn)算符。表5-9:RTL建模的歸約
    發(fā)表于 10-20 15:03

    第八課 運(yùn)算符和表達(dá)式(運(yùn)算符)

    學(xué)過匯編的朋友都知道匯編對位的處理能力是很強(qiáng)的,但是單片機(jī)C語言也能對運(yùn)算對象進(jìn)行操作,從而使單片機(jī)C語言也能具有一定的對硬件直接進(jìn)行操作的能力。
    發(fā)表于 11-22 12:50 ?630次閱讀

    STM32學(xué)習(xí)

    學(xué)習(xí)過程中的一些疑問記錄一下,方便自己復(fù)習(xí)(多數(shù)內(nèi)容為轉(zhuǎn)載,自己心得部分)STM32學(xué)習(xí)一、運(yùn)算運(yùn)算符(&)參加
    發(fā)表于 01-13 10:21 ?0次下載
    STM32學(xué)習(xí)

    C語言 | 嵌入式操作精華技巧匯總

    分享關(guān)于操作一些筆記:一、操作簡單介紹首先,以下是運(yùn)算符:在嵌入式編程中,常常需要對一些寄存器進(jìn)行配置,有的情況下需要改變一個字節(jié)中
    發(fā)表于 01-13 10:26 ?0次下載
    C語言 | 嵌入式<b class='flag-5'>位</b>操作精華技巧匯總

    什么是移位運(yùn)算符

    移位運(yùn)算符將向量的向右或向左移位指定的次數(shù)。SystemVerilog具有和算術(shù)移位運(yùn)算符
    的頭像 發(fā)表于 02-09 15:49 ?1732次閱讀
    什么是移位<b class='flag-5'>運(yùn)算符</b>

    Python中運(yùn)算符介紹

    : print(“a《30”) if 4 《= a 《= 30: print(“1《=a《=10”) if 4 《= a a 《= 30”) 3. 運(yùn)算符
    的頭像 發(fā)表于 03-08 17:22 ?1051次閱讀