在编写SystemVerilog&Verilog的过程中,我们在涉及到左移和右移的操作运算时需要注意算术右移和逻辑右移的区别,并且需要对此非常小心,否则容易造成错误!!!
算术右移:要考虑符号位,右移一位,如果符号位为1,符号位保持不变,左边为1,整体依次右移1位。
逻辑右移:无需考虑符号位,所有bit位均右移,左边补0。
例如,要对6位二进制数111000(6 'b111000)执行右移一位的操作:
逻辑右移运算得到的结果为6’b011100,而算术右移运算得到的结果为111100。
算术左移和逻辑左移也同理。