负数的定点乘法

时间:2017-02-21 19:32:07

标签: fixed-point

我有以下方法在固定点上乘以两个32位数 19.13格式。但我认为这种方法存在问题:

1.5f向上舍入为2.0f,而-1.5f向上舍入为-1.0f

在我看来,-1.5应该向下舍入到-2.0f

首先,当前的舍入是否有意义,如果没有,我该如何更改它 更一致吗?

static OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b) {
    OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
   temp += 4096;
   assert((temp >> 13) <= (OPJ_INT64)0x7FFFFFFF);
   assert((temp >> 13) >= (-(OPJ_INT64)0x7FFFFFFF - (OPJ_INT64)1));
   return (OPJ_INT32) (temp >> 13);
}

0 个答案:

没有答案