我们评测CPU性能的时候,经常会说道一个概念:浮点运算,我经常在想,浮点运算到底是一个什么样的东西,用得着把它当成评测CPU性能的关键点吗?搞清楚这个问题,首先要说到浮点数和定点数,先看一个例子,用javascript执行console.log(0.1+0.2), 查看其输出,发现0.1+0.2≠0.3!,为什么会这样?这简直太反常识了!
计算机中数字的表示
我们知道,计算机中通过内存存储数据,一个字节有8个位,可以最大表示256个数据,如果用来表示数字,则一个字节可以用来表示0-255,我们可以通过用多个字节来表示更大的数字,如32位计算机中,我们可以直接在CPU中表示和计算最大32位整数,如果大于32位,还可以通过分步的方式进行。但即使是这样,我们还是遇到了一些问题,如果引入非整数,我们发现很多数字根本就无法全部表示,整数之间都有无穷多个数,还有一些无理数,圆周率π,√2等,也是无法进行精确表示的,所以我们在计算机中我们采用近似的方法对其进行表示。
计算机中所有的信息都是用二进制表示的,例如字符“A”,用ASCII码表示其二进制为01000001;整数10,用二进制表示是00001010。那么如果是小数,例如0.2,用二