Verilog 中的位宽运算(bitwise operations)归纳

VerilogSystemVerilog 中,位宽运算(bitwise operations)是对二进制数字进行操作的常见操作。这些运算符直接对操作数的每一位进行计算,常用于硬件设计和数字电路仿真。以下是常见的位宽运算符及其说明:

1. 按位与(Bitwise AND) &

  • 符号&
  • 作用:对两个操作数的每一位进行“与”运算。只有当两个操作数的对应位都为 1 时,结果才为 1,否则为 0

示例

// 8位数的按位与 8'b11001010 & 8'b10111001 // 结果: 8'b10001000

2. 按位或(Bitwise OR) |

  • 符号|
  • 作用:对两个操作数的每一位进行“或”运算。只要其中一个操作数的对应位为 1,结果就为 1,否则为 0

示例

// 8位数的按位或 8'b11001010 | 8'b10111001 // 结果: 8'b11111011

3. 按位异或(Bitwise XOR) ^

  • 符号^
  • 作用:对两个操作数的每一位进行“异或”运算。当且仅当两个操作数的对应位不同(一个为 1,一个为 0)时,结果为 1,否则为 0

示例

// 8位数的按位异或 8'b11001010 ^ 8'b10111001 // 结果: 8'b01110011

4. 按位取反(Bitwise NOT) ~

  • 符号~
  • 作用:对操作数的每一位进行反转。所有的 0 变为 1,所有的 1 变为 0

示例

// 8位数的按位取反 ~8'b11001010 // 结果: 8'b00110101

5. 按位与归约(AND Reduction) &(带有归约操作)

  • 符号&(带有归约操作)
  • 作用:对一个多位数的所有位进行归约“与”运算,结果只有一个位。如果所有位都为 1,则结果为 1,否则为 0

示例

// 8位数的按位与归约 &8'b11001010 // 结果: 0 (因为有0位)

6. 按位或归约(OR Reduction) |(带有归约操作)

  • 符号|(带有归约操作)
  • 作用:对一个多位数的所有位进行归约“或”运算,结果只有一个位。如果任何位为 1,则结果为 1,否则为 0

示例

// 8位数的按位或归约 |8'b11001010 // 结果: 1 (因为有1位)

7. 按位异或归约(XOR Reduction) ^(带有归约操作)

  • 符号^(带有归约操作)
  • 作用:对一个多位数的所有位进行归约“异或”运算,结果为 1,当位中 1 的个数为奇数时;否则为 0

示例

// 8位数的按位异或归约 ^8'b11001010 // 结果: 1 (因为1的个数是奇数)

8. 按位左移(Bitwise Left Shift) <<

  • 符号<<
  • 作用:将操作数的所有位向左移动指定的位数。左移时,低位用 0 填充,符号位(如果有)不变。

示例

// 8位数的左移 8'b11001010 << 2 // 结果: 8'b00101000

9. 按位右移(Bitwise Right Shift) >>

  • 符号>>
  • 作用:将操作数的所有位向右移动指定的位数。右移时,高位用符号位(对于有符号数)或 0(对于无符号数)填充。

示例

// 8位数的右移 8'b11001010 >> 2 // 结果: 8'b00110010

10. 算术右移(Arithmetic Right Shift) >>>

  • 符号>>>
  • 作用:与普通右移类似,但算术右移会根据符号位进行填充。对于有符号数,移位时高位会填充符号位,而不是 0

示例

// 有符号数的算术右移 8'b11001010 >>> 2 // 结果: 8'b11110010

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值