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<<4) ; //4'b1010
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<<4) ; //-6
3. 绝对值
求 dbin 的绝对值逻辑如下:
dbin_abs = (dbin[DW-1]? ~dbin : dbin) + 1'b1 ;
例如,4bit 数字 -
十进制有符号数补码转换与计算技巧,

最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



