在写代码的过程中遇到了定点数-0.3125除以3的计算,出现了点困惑,网上的资料查找不全面,看到这个例题分享给大家:
我需要计算的数据为4位整数,4位小数的定点量化格式, 参考上述例子,计算过程如下:
x = - 0000.0101(十进制中的-0.3125,保留符号位,手算除法中直接判断符号)
y = 0011.0000(十进制中的3)
z = x / y = - 0000.0001(十进制中的-0.0625)
在以下计算中忽略符号位,仅将绝对值进行比较,即 z 为负数,x = 0000.0101, y = 0011.0000。
<1>:x < y , z的整数部分为0000,且 z < 0 , z = - 0000.□□□□
<2>:y1 = y / 2 = 0001.1000 ,x < y1, z = - 0000.0□□□
<3>:y2 = y1 / 2 = 0000.1100 ,x < y2, z = - 0000.00□□
<4>:y3 = y2 / 2 = 0000.0110 ,x < y3, z = - 0000.000□
<5>:y4 = y3 / 2 = 0000.0011 ,x > y4, z = - 0000.0001
r = x - y4 = 0000.0010
由于计算中只需得到小数点后第四位结果,计算到此结束,最终答案为 z = - 0000.0001,也就是十进制中的-0.0625,如果计算精度不同,可以继续使用余数r向下计算。