本节主要对有符号数的十进制与二进制表示以及一些数值变换进行简单的总结。

定义一个宽度为 DW 的二进制补码格式的数据 dbin ,其表示的有符号十进制数字为 ddec 。

reg [DW-1:0]     dbin ;

1. 十进制有符号数转二进制补码

正数的补码为原码。

假如十进制数 ddec 为负数,则计算其对应的二进制补码的方法主要有 2 种:

将ddec 最高位符号位改写为 1,剩余数值部分取反加一

例如,4bit 数字 -6 的数值部分为 4’b0110,取反加一后为 4’b0010,高位改写后为 4’b1010。

dbin = {1'b1, ~3'b110 + 3'b1} ;    //4'b1010

将负数 ddec 直接与其代表的最大数值范围数相加(有人称之为模数)

例如,4bit 数字 -6 与 16(2 的 4 次幂)的和为 10, 即对应 4’b1010。

dbin = ddec + (1

2. 二级制补码转十进制有符号数

当 dbin 最高位为 0 时,其数值大小即为其表示的十进制正数。

当 dbin 最高位为 1 时,计算其表示的十进制有符号数方法主要有 2 种:

将 dbin 取反加一,并增加符号位

例如,4bit 数字 -6 的补码为 4'b1010,取反加一后为 4'b0110,增加符号位后为 -6。

ddec = -(~4'b1010 + 1'b1) ;  //-6


将 dbin 代表的无符号数值与其代表的最大数值范围数直接相减

例如,4bit 数字 -6 的补码为 4'b1010,即无符号数值为 10,10 减 16 便可得到 -6 。

ddec = dbin - (1

3. 绝对值

求 dbin 的绝对值逻辑如下:

dbin_abs = (dbin[DW-1]? ~dbin : dbin) + 1'b1 ;

例如,4bit 数字 -6 的补码为 4'b1010,取反加 1 后的值为 4'b0110(6),即为 -6 的绝对值。

但如果 dbin 为正数,加 1 后的值比其真正的绝对值要大 1,此步操作只是为了让正数部分的绝对值数量与负数部分一致。因为一定位宽下,由于 0 值的存在,有符号数表示的负数数量会比正数多 1 个。

4. 有符号数转无符号数

将有符号数扩展成为无符号数的逻辑如下:

dbin_unsigned = {!dbin[DW-1], dbin[DW-2:0]) ;

例如:

4'b1010 (-6) -> 4'b0010 (2),4'b0010 (2) -> 4'b1010 (10)

其实转换原则是将数据代表的数值范围移动到 0 以上,有符号数转换成无符号数之后,数据相对间的差并没有改变。

5. 扩展符号位

计算时有时会根据需要对有符号数位宽进行扩展。假设位宽增量为 W,扩展逻辑如下:

dbin_extend = {{(W){dbin[DW-1]}}, dbin} ;

扩展原则就是将信号代表符号位的最高位,填充至扩展的高位数据位中。

例如 4'b1010 (-6) 扩展到 8bit 为 8'b11111010,计算其对应的负数仍然是 -6。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
  1. 免费下载或者VIP会员资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
  2. 提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。
  3. 找不到素材资源介绍文章里的示例图片?
    对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
  4. 付款后无法显示下载地址或者无法查看内容?
    如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理
  5. 购买该资源后,可以退款吗?
    源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源

评论(0)

提示:请文明发言