運算子分類 | 運算子 |
---|---|
算數運算子 | +,-,*,/,% |
關係運算符 | >,>=,<,<= |
相等關係運算符 | ==,!=, ===,!== |
邏輯運算子 | &&,||,!, |
位運算子 | >>,<< |
規約運算子 | &,|,^,~&,~|,~^,^~ |
移位運算子 | >>,<< |
條件運算子 | ?: |
連線運算子 | {} |
運算後的位寬:
以’+'舉例:
reg[3:0] a,c;
reg[2:0] b;
reg[5:0] d;
a = b+c;
d = b+c;
1.上面的加法運算中右邊表達式的位寬右b、c中的最長位寬決定,爲4位元;結果的位寬有等號左邊的變數的位寬決定。所以第一個運算的結果是4位元,溢位部分被丟棄;第二個運算的結果是6位。
2.進行整數除法運算時,小數部分直接被忽略,只取整數部分;
3.取模運算時,結果的符號由運算子左邊的變數的符號決定;
關係運算符的結果出了1或0外,還可能是不定x。
如:
4'b1101 < 4'b1xx1; //結果爲x
1.相等關係運算符的運算結果也有三種可能:相等(1),不等(!),不定(x)。
2.==與===的區別:
==運算子的真值表
== | 0 | 1 | x | z |
---|---|---|---|---|
0 | 1 | 0 | x | x |
1 | 0 | 1 | x | x |
x | x | x | x | x |
z | x | x | x | x |
===運算子的真值表
=== | 0 | 1 | x | z |
---|---|---|---|---|
0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
x | 0 | 0 | 1 | 0 |
z | 0 | 0 | 0 | 1 |
===和!==常用語case表達式的判別,所以又稱爲case等式運算子
如果運算元中存在不定態x,則結果也是不定態。
如果操作符兩側的運算元位數不等時,會自動將兩個運算元按右端對齊,位數少的運算元會在高位用0補齊。
規約運算子都是單目運算子,運算後的結果只有一位
混合使用多種運算子時最好使用()來控制運算的優先順序,以避免錯誤,也增加了程式的可讀性。