浮点数:什么是浮点数,定义在计算机科学中的名词,计算机系统结构、计算机组成原理、实现等都有所涉及,由于系统结构、组成、实现等层次不一样,对应不同层次的浮点。即系统结构主要来研究浮点数据表示的理论,特性,量化分析。组成里面可能就是对它的逻辑实现了,实现里面就是物理实现,用什么器件,电气技术去实现。
我们现在从计算机系统结构的层次来了解浮点数据(组成和实现没必要,硬件工程师研究方向),浮点数据类比数学中的科学计数法。
比如我们计算光的速度,太阳到地球的距离等等,天体,物理等研究上一些计数均用科学计数法,将计算机用到这些领域来做一些研究的话,那就需要去让计算机支持科学计数法,就是我们的浮点数据表示。像是向量计算机等做专门领域研究的,都有自己的浮点数支持。
与浮点数对应的就是定点数,定点数是无限的、不冗余、连续的,浮点数是有限的、冗余、不连续的。定点数即:1、2、3……4.1……5.8等等(同理,负数也一样)。
可以用公式 N = m * rm^e 来表示,意思是 N 等于 m乘以rm的e次方。
结合上图,在计算机系统结构中,浮点数在存储单元中即是如此:尾数的值 m ; 阶码的值 e ; 尾数的基 rm ; 阶码的基 re ; 尾数长度 p ; 阶码长度 q 。
在继续研究之前,明确以下规则:
阶码用移码表示,尾数用补码表示,阶码的基数按照IEEE,一般为2,尾数的基数有按照2,8,16等,每种代表不同的精度。
现在,在继续研究之前,对以上几个概念做一解释:
补码:机器数的最高一位代表符号,0代表正号,1代表负号。若为正数,数的补码和原码相同。若为负数,以下各位为原码按位求反后,最后一位加1来表示。零只有一种表示形式,即原码中的正零。负零的表示,当为纯小数,则为-1。当为纯整数,则为2^n,n为数值位的位数。
移码:移码由数值自身于2^n相加得到,如果是阶码符号位为1(负),则它在存储单元中的存储表示为原码的补码+2 ^(q-1),此处q-1即为n。
最后明确一概念:
规格化浮点数:以尾数采用补码方式为例,尾数的最高位和符号位相反。符号位为0,尾数最高位为1。符号位为1,尾数最高位为0。
推荐一篇文章(细微处有些瑕疵,单不影响整体学习效果):