我有一个8位输入A和3位输入n。我想向左或向右移动A次,但这段代码似乎不起作用(输出为x):
w = A << n;
但是当我输入一个像2而不是n的整数时,代码可以正常工作。那么如何将n转换为整数值,以便移位操作可以正常工作?
答案 0 :(得分:0)
移位运算符始终将RHS上的表达式视为无符号。您还需要将n声明为有符号变量,或者转换为已签名的
bit signed [2:0] n;
assign w = (n >= 0) ? A << n : A>> -n;
bit [2:0] n;
assign w = (signed'(n) >= 0) ? A << n : A >> -n;