Verilog 运算符优先级引发的血案
来源:互联网 发布:windows关闭进程命令 编辑:程序博客网 时间:2024/05/11 15:35
今天翻译matlab代码时需要用移位和加法实现乘法,发现一个非常奇怪的问题
需要计算的是 x = 3*a,将a左移一位与a相加,
verilog代码如下:
x <= a + a<<1;
仿真出来的结果 x = 4*a,
如果代码为:
x <= a<<1 + a;
仿真结果为 x = 0。
晓明同学告诉我,要加括号才可以,因为优先级问题,算术操作符优先级高于移位。
下面两个式子效果一样,结果为四倍的a
x <= a + a<<1;x <= (a + a) <<2;
下面两个式子效果一样,结果为0
x <= a <<1 + a;x <= a <<(1+a);
只有下面这样才对,两种写法没有区别。
x <= a + (a<<1);x <= (a<<1) + a;
以前没有用verilog算过数,没有注意过这种问题,以后要注意。
图来自与非网
http://www.eefocus.com/book/08-01/319421276058797.html
0 0
- Verilog 运算符优先级引发的血案
- 一个运算符优先级问题引发的血案
- 由一个iOS单利写法引发的C语言运算符优先级血案。
- Verilog运算符优先级
- 运算符优先级引发的bug
- HDU2033引发的关于运算符优先级
- 三目运算符和if_else引发的血案
- 换行符引发的血案
- 运算级优先级引发的Bug
- 一个换行符引发的“血案”
- ActiveX引发的“血案”
- size_t引发的血案
- 一个 * 引发的血案
- gets引发的血案
- Print 引发的“血案”
- lease引发的血案
- 一个“-”引发的血案
- MD5引发的血案
- 如何使用MyEclipse的快捷键查找文件和类等资源
- 计算机网络(谢希仁)学习笔记(1)
- leetcode_257. Binary Tree Paths
- Ubuntu下解压tar和deb
- NIO流行框架 Netty
- Verilog 运算符优先级引发的血案
- Dijkstra算法
- c++ 表达式必须包含类类型 VC_error_code:c2228
- 音视频再学习笔记(2)(about AVPlayerItem)
- DEMO:java反射机制获取该类的所有属性类型、值
- mysql主从复制
- SpringMVC
- Java-----对象克隆
- 复杂布局——面板(JPanel)组件的使用