定点数与浮点数
小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数
定点数:
定点数并不是仅仅只能表示整数,定点数也可以表示小数。 浮点数同样可以表示小数和整数;定点数和浮点数只是计算机表示数据的两种不同方式而已。
定点数的意思是:小数点的位置在计算机的存储是约定好的,固定的。一个小数的整数部分和小数部分分别转化为二进制的表示。
例如:十进制的 25.125
整数部分:25使用二进制表示为:11001
小数部分:0.125使用二进制表示为:.001
所以合起来使用11001.001 表示十进制的25.125
所以在一个8位的计算机中,前5位表示一个小数的整数部分,后3位表示小数部分,小数点默认是第五位后的位置(实际上计算机不会存储小数点,只是大家这么约定)。
使用11001001表示十进制的25.125。看起来很完美,也很容易理解
定点数的缺陷:
一个8位的计算机,整数部分111111十进制最大只能表示为31;小数部分0.111 最大只能表示0.875,表示的数据范围太小了。
当然在16位的计算机中,可以通过增大整数部分位数表示更大的数,增大小数部分的位数可以提高小数精度。但是这种方式对计算机来说开销非常大,所以大多数计算机并没有选择使用定点数表示小数,而是采用浮点数表示小数。
浮点数:
浮点数表示小数:用科学计数法表示较大的数
178.125转化为二进制为 10110010.001,又可表示为:1.0110010001 乘以 2的111次方(111是7的二进制表示)
10110010001 这部分被称作尾数(M)
111这部分被称作阶码(P)
正负被称作数符(S): 0表示正数 , 1表示负数。
那么一个浮点数可以使用三部分表示:数符(S),阶码(P),尾数(M)。
根据IEEE754标准,64位计算机的长实数浮点表示:位符(1位)阶码(11位)尾数(52位)
178.125在计算机中使用浮点数表示为:
当相同位数的计算机表示数据(比如64位),浮点数能表示的数据范围远远大于定点数表示的数据范围。
当相同位数的计算机表示数据(比如64位),浮点数的相对精度比定点数要高。
浮点数在计算时,要分阶码部分的计算和尾数部分的计算,而且运算结果要求规格化,故浮点运算步骤比定点数运算步骤多,运算速度比定点运算速度低。
目前大多数计算机使用浮点数表示小数。