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