verilog有符号数的位宽转换

首位为符号位(0-正,1-负)

正数的反码和补码都为本身

负数的反码:把原码的符号位保持不变,数值位逐位取反,即可得原码的反码。
负数的补码:在反码的基础上加 1 

2 + (-1)=  0010  +  (1001) 是不对的,应该是 2 + (-1)的补码,-1(1001)的补码是1111 

0010  + 1111 =   0001   结果就是1 

负数的补码求原码, 如1111是负数的补码,则原码为符号位不变,减1取反    得1001 

//以4位数字为例,其中最高位为符号位,0正1负
1   0001            -1   1001
2   0010            -2   1010
3   0011            -3   1011
4   0100            -4   1100


数据在内存中以补码的形式存放

verilog 中的有符号数以补码形式表示   !!!!

//例 a是4bit有符号数,b是8bit有符号数
a = 4'b1001 //  即  a = -7
b = a;
则b = 8'b1111 1001;  // 补码形式,转原码是-7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

eachanm

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

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

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

打赏作者

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

抵扣说明:

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

余额充值