先給大家出一個題目:當x為5時,y=x << 6 + x <<3 + x << 2 + x的結(jié)果為多少,即y的值是多少?
我先不給出答案,先貼上正確的運算符優(yōu)先級順序,如下圖所示:

俗話說溫故而知新,今天回顧一下verilog的運算符的優(yōu)先級。
說一下回顧這個原因:今天打算用verilog實現(xiàn)一個乘法器,即:y=77*x。為了加快運算時間,將77轉(zhuǎn)換為二級制(1001101),然后使用了移位寄存器來實現(xiàn)乘法運算,具體代碼如下:y=x << 6 + x <<3 + x << 2 + x。但是仿真結(jié)果不對,仿真結(jié)果為0的概率比較大。之前還以為是x的位寬太小導致的,但是修改位寬之后還是不行,所以又重新審視了一下這段代碼,懷疑是運行操作符的優(yōu)先級有問題導致的,查閱書籍發(fā)現(xiàn)確實是這樣的:加法的優(yōu)先級高于左移運算,導致先進行加法運算再進行移位運算,所以結(jié)果和預期不一致。
實際上,要實現(xiàn)y=77*x運算,正確的verilog代碼如下:y=(x << 6)+(x <<3)+(x << 2)+ x。
所以說,剛開始給出題目的答案不是我不給出,實際上按照正確優(yōu)先級計算的結(jié)果沒有太多的意義。
審核編輯:湯梓紅
-
Verilog
+關(guān)注
關(guān)注
30文章
1374瀏覽量
114618 -
乘法器
+關(guān)注
關(guān)注
9文章
221瀏覽量
38880 -
運算符
+關(guān)注
關(guān)注
0文章
173瀏覽量
12124
原文標題:考題
文章出處:【微信號:FPGA雜記,微信公眾號:FPGA雜記】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
JAVA語言的運算符的優(yōu)先級
STM32學習及應用筆記二:一次運算符優(yōu)先級造成的錯誤
C語言運算符的優(yōu)先級和結(jié)合性
Bug之邏輯運算符優(yōu)先級分享!
C語言運算符優(yōu)先級(超詳細)
C語言入門教程-運算符優(yōu)先級
條件運算符是什么_條件運算符有哪些
verilog運算符的優(yōu)先級
評論