如何使用按位运算添加896?

时间:2018-11-13 04:49:04

标签: floating-point bit-manipulation ieee-754

问题:如何通过按位运算而不是加/减来表达b = a + 896 ... (1)a = b - 896 ... (2)


动机(与此问题无关)

要在IEEE754 32位和64位浮点的指数值之间进行转换,由于以下等式,我需要加/减896:

127 + exponent_value = fp32_biased_exponent  // bit 30-23
1023 + exponent_value = fp64_biased_exponent // bit 62-52

因此,b = a + 896 ... (1)a = b - 896 ... (2)

在程序中看起来像这样

uint64_t b = ((uint64_t)f32.biased_exponent + 896) & 0x7ff;
uint64_t a = (uint32_t)(((uint64_t)fp64.biased_exponent - 896) & 0xff;

0 个答案:

没有答案