很多数据都是既包含整数部分,同时又包含小数部分,对小数点的表示成为计算机当中的一个问题。
根据小数点的位置是否固定,可以分为定点表示和浮点表示。定点数和浮点数代表了数值的两种不同表示格式,由原码或补码构成。
定点数:
用来表示整数和纯小数,其小数点位置固定,并且隐藏起来,一个定点数只包含一种编码。
定点整数:小数点位于最低位之后。
定点小数:小数点位于最高之前,符号位之后。
注意不管是定点数还是浮点数,小数点是不占用二进制位的。
浮点数:
浮点数采用科学计数法表示:N=M*R^E
M为位数,R为基数,即权,E为阶码。在二进制中R为2,不表示。尾数是纯小数,用原码或补码表示。阶码为整数,用补码表示。
如:110.011表示为0.110011*2^11,注意这里的11是二进制,对应十进制的3。
浮点数格式:[阶符][阶码][数符][尾数小数点][尾数]
浮点数规格化:如果一个非零浮点数的尾数最高位为1,则称之为浮点规格化数。计算机内部,浮点数都是以规格化形式出现。
例:256.5的规格化浮点数表示,阶码用8位二进制位,尾数用16位二进制位。
256.5=1 0000 0000.1=0.1000 0000 01*2^9=0000 1001 0100 0000 0010 0000
根据IEEE754标准,单精度浮点数格式:[数符1位][指数部分8位][尾数部分23位],总共32位;双精度浮点数格式:[数符1位][指数部分11位][尾数部分52位],总共64位。