定点基础知识

符号数与无符号数

符号表示

U(m,n): 无符号数,m位位宽,小数位宽为n,整数位宽为m-n
S(m,n): 有符号数,同上

动态范围

上述定点能表示为动态范围为:
U(m,n): 【0:1:2 ^m-1】x (1/2 ^n) ,即【0:1 / 2 ^n:(2 ^m-1)/(2 ^n)】
S(m,n): 【-2 ^(m-1):1:2 ^(m-1)-1】x (1/2 ^n) ,即【-2 ^(m-1)/(2 ^n):1/2 ^n:(2 ^(m-1)-1) / (2 ^n)】

数据相乘,输出位宽为多少?

以例子说明。
(1) U(3,1)x U(5,2)——> U(8,3)
即,对于无符号数,位宽为两者位宽之和,小数位位宽为两者小数位位宽之和
(2) S(3,1)x S(5,2)——> S(7,3)
即,对于有符号数,位宽为两者位宽之和 -1,小数位位宽为两者小数位位宽之和
需要注意,若两者都取所能取到的最小数,即 -2^2 x (-2 ^4) =2 ^ 6, S(7,3)无法表示2 ^6 。此种情况概率很小,但在仿真时需注意生成case验证。

数据相加,输出位宽为多少?

不包含小数位

先将两者拓展成相同位宽,输出多1位。

包含小数位

先将小数点对其,整数位拓展成相同整数位,小数位拓展成相同小数位。因此,输出为整数位多一位,小数位与最大小数位相同。
eg,U(5,2) + U(4,3) ——> U(6,3)

负数如何在十进制与二进制之间转换?

十进制——>二进制

同样以例子举例。十进制数:-128
(1)求该数绝对值,为128;
(2)若表示为位宽为8位的二进制,2^8 = 256;
(3)256-128=128,128对应的8位无符号数为10000000。
因此,-128对应的二进制为10000000。

二进制——>十进制

同样以例子举例。
二进制数:10000000
(1)该数作为无符号数,对应的十进制为128;
(2)8位位宽,2^8 = 256;
(3)用无符号数十进制128 - 256 = -128 。
注:如此算出的是补码

存在小数位如何转换?

存在小数的复数实现十进制转向二进制

以-0.5为例。大致思路如下:
首先令小数乘2^1,舍去小数位,得到-1;
按上述负数十进制转二进制的方法,若位宽为4,得到-1对应的二进制为1111;
再除以2^1,也就是将小数点左移,得到-0.5对应的二进制为S(4,1)111.1

存在小数的复数实现二进制转向十进制

同理,先将小数点右移,计算无小数位的二进制对应的十进制,再除以2^n。

移位后位宽的变化

移位不改变整体位宽,只是移动小数点,左除右乘,改变小数位宽。
S(m,n)x 2^k ——> S(m,n-k)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值