Verilog 中的移位(算术移位, 逻辑移位, 循环移位)

(1)>>>(算术右移)与>>(逻辑右移)的区别:

逻辑右移就是不考虑符号位,右移一位,左边补零即可。
算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。
所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方

例如,8位二进制数11001101分别右移一位。
逻辑右移就是[0]1100110
算术右移

  • 45
    点赞
  • 245
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
Verilog 移位操作符根据移位时对符号位的处理方式,可以分为算术移位逻辑移位;根据移位时对溢出数据的处理方式,可以分为循环移位和非循环移位。 1. 算术移位 算术移位是指在移位过程,对于有符号数,符号位也参与移位操作。Verilog 算术移位操作符为 >>。例如,将有符号数 a 右移 3 位并赋值给有符号数 b,可以使用以下代码: ```verilog b = a >> 3; ``` 2. 逻辑移位 逻辑移位是指在移位过程,对于有符号数,符号位不参与移位操作。Verilog 逻辑移位操作符为 >>>。例如,将有符号数 a 逻辑右移 3 位并赋值给有符号数 b,可以使用以下代码: ```verilog b = a >>> 3; ``` 3. 循环移位 循环移位是指在移位过程,溢出的数据重新从另一端进入。Verilog 可以使用位移运算符 << 和 >> 实现循环移位。例如,将一个 8 位的向量 a 循环左移 3 位并赋值给另一个向量 b,可以使用以下代码: ```verilog b = {a[2:0], a[7:3]}; ``` 这里将向量 a 的最低 3 位和最高 5 位分别放在了向量 b 的最高和最低位置,实现了循环左移 3 位的操作。 4. 非循环移位循环移位是指在移位过程,溢出的数据丢失。Verilog 可以使用位移运算符 << 和 >> 实现非循环移位。例如,将一个 8 位的向量 a 右移 3 位并赋值给另一个向量 b,可以使用以下代码: ```verilog b = a >> 3; ``` 这里将向量 a 的最高 3 位移出,丢失了这些数据。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值