先给大家出一个题目:当x为5时,y=x << 6 + x <<3 + x << 2 + x的结果为多少,即y的值是多少?
我先不给出答案,先贴上正确的运算符优先级顺序,如下图所示:

俗话说温故而知新,今天回顾一下verilog的运算符的优先级。
说一下回顾这个原因:今天打算用verilog实现一个乘法器,即:y=77*x。为了加快运算时间,将77转换为二级制(1001101),然后使用了移位寄存器来实现乘法运算,具体代码如下:y=x << 6 + x <<3 + x << 2 + x。但是仿真结果不对,仿真结果为0的概率比较大。之前还以为是x的位宽太小导致的,但是修改位宽之后还是不行,所以又重新审视了一下这段代码,怀疑是运行操作符的优先级有问题导致的,查阅书籍发现确实是这样的:加法的优先级高于左移运算,导致先进行加法运算再进行移位运算,所以结果和预期不一致。
实际上,要实现y=77*x运算,正确的verilog代码如下:y=(x << 6)+(x <<3)+(x << 2)+ x。
所以说,刚开始给出题目的答案不是我不给出,实际上按照正确优先级计算的结果没有太多的意义。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Verilog
+关注
关注
30文章
1374浏览量
114709 -
乘法器
+关注
关注
9文章
221浏览量
38924 -
运算符
+关注
关注
0文章
173浏览量
12151
原文标题:考题
文章出处:【微信号:FPGA杂记,微信公众号:FPGA杂记】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
STM32学习及应用笔记二:一次运算符优先级造成的错误
本人在最近一个项目的开发中,出现一个应为疏忽运算符优先级造成的问题,检查了很久才发现问题,所以觉得运算符的优先级问题还是有必要再研究一下。具体的问题是这样的,我采集了传感器的原始数据
发表于 06-03 12:18
C语言运算符的优先级和结合性
,很明显先进行乘法运算,计算3*5,结果为15,再进行加法运算,计算12+15,结果为27。也就是说,乘法的优先级比加法高,要先计算,这与数学中的规则是一样的。 所谓优先级,就是当
发表于 07-06 06:46
Bug之逻辑运算符优先级分享!
发现原来是运算符优先级的问题;看下面的图可以知道,==的优先级高于 & ,再看上面那段代码。。。发现了什么。。。。。。。天呐,,,可把我害苦了。。这也告诉我们,如果对优先级不全熟悉的话
发表于 10-28 20:31
C语言运算符优先级(超详细)
C语言运算符优先级(超详细) 当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!C语言
发表于 04-27 16:47
C运算符的优先级和结合性详细解决
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系运算符、逻辑运算符、位
python运算符优先级顺序口诀
Python是一种非常流行的编程语言,具有广泛的应用领域。在Python中,运算符是进行各种数学和逻辑运算的关键部分。了解运算符的优先级顺序对于正确理解和书写Python代码至关重要。
python中运算符的优先级大小
Python中运算符的优先级决定了表达式中各个运算符的计算顺序。了解运算符的优先级对于正确理解和编写复杂的表达式非常重要。本文将详细介绍Py
verilog运算符的优先级
评论