逻辑左移、逻辑右移、算术左移、算术右移、循环左移、循环右移

逻辑左移时,最高位丢失,最低位补0

逻辑右移时,最高位补0,最低位丢失;

算术左移时,依次左移一位,尾部补0,最高的符号位保持不变。

算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;

循环左移时,将最高位重新放置最低位

循环右移时,将最低位重新放置最高位

使用循环操作的一个目的就是把每一位连续放到最左边,以判定数据的符号。如果要把一个数字的高位部分和低位部分互换,采用一位操作就很方便,速度很快。


例如:

1010100010101  逻辑左移一位结果为  0101000101010

    逻辑右移一位结果为 0101010001010

    算术左移一位结果为 1101000101010

算术右移一位结果为 1101010001010

循环左移一位结果为 0101000101011

循环右移一位结果为 1101010001010

算术

  • 34
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
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 位出,丢失了这些数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值