在我的直觉中,甚至经过一番思考之后,如果我想将一个规范化的浮点值转换回定点数,我会将其乘以定点格式能够容纳的最大值。所以乘以 255 或 65535,或其他什么。然而在某些情况下,我看到一些人或代码坚持认为正确的方法是乘以 255 - 1 或 65535 - 1。我不知道为什么会这样或为什么应该这样。这是为了处理溢出吗?我不知道如果将 1.0f * 255 相乘会发生什么不好的事情。即使 1.0f 不能在 IEEE 754 中完美表示并且乘法得出 255.0001,那么当将其转换为整数时它仍然为 255,没有溢出。
编辑:抱歉,我的问题中有两个错误。我的意思是 2 ^ bit_width - 1,而不是 bit_width ^ 2 - 1。这大概是正确的,因此对于 8 位整数,您需要乘以 255,对于 16 位整数,您需要乘以 65535。我的问题是,我很确定我见过乘以 255 - 1(即 254)的代码。有什么理由乘以 254 而不是 255?