尾数部分使用正则表达式(按照特定的规则来表示数据的形式即为正则表达式,除小数外,字符串以及数据库等都有各自的正则表达式),可以将表现形式多样的浮点数统一为一种表现形式。例如,十进制数0.75就有很多种表现形式,如下图所示:
虽然它们表示的都是同一个数值,但因为表现方法太多,计算机在处理时会比较麻烦。因此,为了方便计算机处理,需要制定一个统一的规则。例如,十进制数的浮点数应该遵循“小数点前面是0,小数点后面第1位不能是0”这样的规则。根据这个规则,0.75就是“0.75×10的0次幂”,也就是说,只能用尾数部分是0.75、指数部分是0这个方法来表示。根据这个规则来表示小数的方式,就是正则表达式。
刚才以十进制数为例进行了说明,二进制数也是同样的道理。在二进制数中,我们使用的是“将小数点前面的值固定为1的正则表达式,具体来讲,就是将二进制数表示的小数左移或右移(这里是逻辑移位。因为符号位是独立的)数次后,整数部分的第1位变为1,第2位之后都变成0(这样是为了消除第二位以上的数位)。而且,第1位的1在实际的数据中不保存。由于第1位必须是1,因此,省略该部分后就节省了一个数据位,从而也就可以表示更多的数据范围。
单精度浮点数的正则表达式的具体例子如下图所示
单精度浮点数中,尾数部分是23位,但由于第1位的1被省略了,所以实际上可以表示24位的数值。双精度浮点数的表示方法也是如此,只是位数不同而已。
整数是指使用包含表示符号的最高位在内的全体来表示的一个数值。而浮点数是由符号部分、尾数部分和指数部分这三部分独立的数值组合而成的。
接下来,让我们一起来看一下指数部分中使用的EXCESS系统,使用这种方法主要是为了表示负数时不使用符号位。在某些情况下,在指数部分,需要通过“负OO次幂”的形式来表示负数。EXCESS系统表现是指,通过将指数部分表示范围的中间值设为0,使得负数不需要用符号来表示。也就是说,当指数部分是8位单精度浮点数时,最大值11111111=255的1/2,即01111111=127(小数部分舍弃)表示的是0,指数部分是11位双精度浮点数时,11111111111=2047的1/2,即01111111111=1023(小数部分舍弃)表示的是0。
上图是单精度浮点数指数部分的EXCESS系统表现
标签:表示,正则表达式,浮点数,3.5,EXCESS,部分,小数 From: https://www.cnblogs.com/z1218/p/17092994.html