運算符分類
運算符按功能分為9類:
算術運算符
邏輯運算符
關系運算符
等式運算符
縮減運算符
條件運算符
位運算符
移位運算符
位拼接運算符
運算符按操作數的個數分為3類:
單目運算符:帶一個操作數 邏輯非!,按位取反~,縮減運算符,移位運算符
雙目運算符:帶兩個操作數 算術,關系,等式運算,邏輯,位運算符的大部分
三目運算符:帶三個操作數 條件運算符
01 算術運算符:
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
% | 求模 |
算術運算符 | 說明 |
---|
進行整數除法時,結果值略去小數部分,只取整數部分
%為求模運算符,要求%兩側均為整型數據
求模運算結果值的符號位取第一個操作數的符號位
例:-11%3 結果為-2
進行算術運算時,若某操作數為不定值x,則整個結果也為x
02 邏輯運算符:
邏輯運算符把它的操作數當成布爾變量;
非零的操作數被認為是真(1’b1);
零被認為是假(1’b0);
不確定的操作數如4‘bxx00,被認為是不確定的(可能為零,也可能是非零);但4‘bxx11,被認為是真
&&(雙目) | 邏輯與 |
||(雙目) | 邏輯或 |
!(單目) | 邏輯非 |
邏輯運算符 | 說明 |
---|
進行邏輯運算后的結果為布爾值(1或0)
&&和||的優先級除高于條件運算符外,低于關系運算符,等式運算符等幾乎所有運算符
邏輯非!優先級最高
例:(a>b)&&(b>c) 可簡寫為:a>b && b>c
(a==b)||(x==y) 可簡寫為:a==b || x==y
(!a) || (a>b) 可簡寫為:!a || a>b
建議采用帶括號形式
03 位運算符:
~(單目) | 按位取反 |
&(雙目) | 按位與 |
| (雙目) | 按位或 |
^(雙目) | 按位異或 |
^~,~^(雙目) | 按位同或 |
位運算符 | 說明 |
---|
位運算其結果與操作數位數相同。位運算符中的雙目運算符要求對兩個操作數的相應位逐位進行運算。
兩個不同長度的操作數進行位運算時,將自動按右端對齊,位數少的操作數會在高位0補齊
例 a=5'b11011 b=3'b001 a&b = 5'00001
04 關系運算符(雙目):
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
關系運算符 | 說明 |
---|
運算結果為1位的邏輯值1或0或x.
關系運算時,若關系為真,則返回值為1;若關系為假,則返回值為0;若某操作數為不定值x,則返回值為x。
所有關系運算符優先級別相同。
關系運算符的優先級別低于算術運算符。
例:a
05 等式運算符:
運算結果為1位的邏輯值1或0或x.
等于運算符(==)和全等運算符(===)的區別:
使用等式運算符時兩個操作數必須逐位相等,結果才為1;若某些位為x或z,則結果為x;
使用全等運算符時,若兩個操作數的相應位完全一致(如同是1,0,x,z)則結果為1;否則為0.
所有的等式運算符優先級別相同
===和!==運算符常用于case表達式的判別,又稱為"case等式運算符".
==真值表
===真值表
06 縮減運算符(單目):
對單個操作數進行遞推運算,即先將操作數的最低位于第二位進行與,或,非運算,再將運算結果與第三位進行相同運算,一次類推直至高位。
最后運算結果縮減為1位二進制數
例:reg[3:0] a;
b =|a; //等效于b=((a[0] | a[1]) |a(2)) | a[3]
07 移位運算符(單目):
A >>n 或A<< n
將操作數右移或左移n位,同時用n個0填補移出的空位
左移會擴充位數,右移位數不變,但數據會丟失
08 條件運算符(三目):
信號 = 條件?表達式1:表達式2
當條件為真,信號取表達式1的值,條件為假,則取表達式2的值
09 位拼接運算符:
運算符號{ },用于將兩個或多個信號的某些位拼接起來,表示一個整體信號。
{信號1,信號2}
用重復法簡化表達式,如:{4{w}} //等同于{w,w,w,w}
還可用嵌套方法簡化書寫,如{b,{3{a,b}} //{b,a,b,a,b,a}
在為拼接表達式中,不允許存在沒有指明位數的信號,必須指明信號的位數;若未指明,則默認為32位的二進制數;
如{1,0}=64’h00000001_00000000, 不是2‘b10
==
等于
!=
不等于
===
全等
!==
不全等
等式運算符
說明
==
0
1
x
z
0
0
0
x
x
1
0
1
x
x
x
x
x
x
x
z
x
x
x
x
===
0
1
x
z
0
0
0
0
0
1
0
1
0
0
x
0
0
1
0
z
0
0
0
1
&
與
~&
與非
|
或
~|
或非
^
異或
^~,~^
同或
縮減運算符
說明
>>
右移
<
左移
移位運算符
說明
output [3:0] sum;
output cout;
input [3:0] ina, inb;
input cin;
assign {cout,sum} =ina + inb + cin; //進位與和拼接在一起
算術運算符
審核編輯:劉清
-
二進制
+關注
關注
2文章
794瀏覽量
41602 -
Verilog語言
+關注
關注
0文章
113瀏覽量
8219
原文標題:IC學霸筆記 | Verilog基本語法之運算符
文章出處:【微信號:IC修真院,微信公眾號:IC修真院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論