Verilog学习--移位操作符、原码补码

原码与补码

有符号数,在代码中可以使用十进制数赋值给有符号数,在电路中,数值按照补码形式存储

  • 正数的补码:是其本身
  • 负数的补码:除符号位外,其余位取反,然后+1
reg signed [3:0] a, b;

a = 4'd6;	//原码为 0110,补码为 0110
b = -4'd6;	//原码为 1110 ->反码为 1001 ->补码为 1010 

补码的补码是原码

算术操作符

  • 将负数赋值给reg或其他无符号变量使用二进制补码
  • 如果操作数的某一位是xz,则结果为x

逻辑操作符

  • 如果操作数的任意一位为xz,则其等价于逻辑不确定x
  • 如果操作数全为0,其逻辑值为0
  • 如果操作数有一位为1,其逻辑值为1
reg a = 4'b0011;	//逻辑值为 1
reg b = 4'b10xz;	//逻辑值为 1
reg c = 4'b0z0x;	//逻辑值为 x

根据这个例子,1的优先级更高

移位操作符

在Verilog中,移位操作符有两种,逻辑操作符>>和算术操作符>>>

  • 无符号数:算术右移和逻辑右移没有区别,都是左侧补0
  • 有符号数
    • 逻辑右移,左侧补0
    • 算术右移,符号为1则补1,符号为0则补0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值