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

超詳細(xì)的C語言運(yùn)算符優(yōu)先級
c語言運(yùn)算符優(yōu)先級規(guī)律

評論