腾讯游戏开发精粹
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 引言

2.1.1 浮点数简介

浮点数,顾名思义,它的小数点位置是浮动的,跟随最高位变动,因此它的绝对精度也是变动的。在CPU架构中,浮点数运算通常由FPU(CPU的协处理器)来处理,指令集参照IEEE 754实现,但是实践中不一定会完全严格遵守这个标准。例如:在同一个CPU里FPU和SSE指令得到的结果不一致,因此对确定性有要求的程序不能直接使用浮点数来计算。而整数运算是确定的,本章在整数运算的基础上,实现了一种简单且高效的定点数运算方案。

2.1.2 32位浮点数(单精度)表示原理

在游戏开发中,如果使用浮点数,则通常使用32位的单精度浮点数。如表2.1所示为32位浮点数的结构。

表2.1 32位浮点数的结构

数学公式为

其中,S为符号位,S=0时为正数,S=1时为负数。E为阶码,能表示0~255的范围,对应2的幂次-127~128。M表示尾数,表示范围为0~8388607,对应1.0~1.99999988。

这里,浮点数的精度是不固定的,有效数的位数为7~8位。