移位运算符有两种:逻辑移位运算符 << 和 >>,以及算术移位运算符 <<< 和 >>>。
左移运算符 << 和 <<< 应将其左操作数向左移动,移动的位数与右操作数给出的位数相同。在这两种情况下,空出的位都将用 0 填满。
右移运算符 >> 和 >>> 应将其左操作数向右移动,移动的位数与右操作数的位数相同。 逻辑右移运算符应使用0填充空出的位。如果结果类型为无符号,算术右移应将空出的位填为零,如果结果类型为有符号,则应使用左操作数最高位(即符号位)的值来填充空出的位。如果右操作数的值为 x 或 z,则结果为未知数。右操作数始终被视为无符号数,对结果的符号性没有影响。结果的有符号性由左操作数决定。
例子1:reg变量的结果被赋值为二进制值 0100,即 0001 向左移动两个位置并填充 0。
例子2:reg变量的结果被赋值为二进制值 1110,1000 向右移动两个位置并填充符号。
点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!