为了实现 0 到 1 之间的实数,通常使用 ANSI 浮点数或双精度数。但是 0 和 1 之间的固定精度数(小数模 1)可以有效地实现为 32 位整数或 16 位字,它们像普通整数/字一样相加,但乘以“错误的方式”,这意味着当你乘以 X 时Y,您保留产品的高位。这相当于乘以 0.X 和 0.Y,其中 X 的所有位都在小数点后面。同样,-1 和 1 之间的有符号数也可以通过这种方式实现,只需一个额外的位和一个移位。
如何在 C 中实现固定精度 mod 1 或 mod 2(尤其是使用 MMX 或 SSE)?我认为这种表示对于酉矩阵的有效表示以及数值密集型物理模拟可能很有用。它使更多的 MMX/SSE 具有整数数量,但您需要更高级别的访问 PMULHW。