浮点数在计算机内存中的储存方式。

来源:互联网 发布:淘宝运营主要是做什么 编辑:程序博客网 时间:2024/05/23 15:44

                                                                        浮点数在计算机内存中的储存方式

            整数在计算机内存中是以其二进制的原码,补码和反码来表示的,其中正数的二进制的原码,补码及反码都是其本身。例如:
   A=+62;【A】原=[A]反=【A】补=0 111110;
而负数的原码,反码和补码是不同的。其转换规则是:负数原码是其正直的原码符号位取反(即1表示负号,0表示正号)  负数的反码是其原码除符号位外各位取反。其补码是其反码加一。例如:
   A=-62;  [A]原=1 111110;   【A】反=1 000001;【A】补=1 000010;
            但浮点数在计算机中却无法用这种方式来储存。它们在计算机内存中一般采用定点表示法与浮点表示法来储存的。下面来分别介绍定点表示法和浮点表示法;

            (1)    定点表示法 规定:计算机中所有数的小数点的位置是固定不变的,因此小数点无需使用专门的记号表示出来。而在定点的小数格式中,把小数点固定在数值部分最高位的左边。任一定点小数的计算机内表示形式如下:
              [ N0]               .      【N-1][N-2][......][N-m】
              符号位        小数点         数值部分
对于二进制的(m+1)位定点小数格式的数N所能表示的范围是:
                         |N|<=1-2^(-m)
  因此定点小数格式表示的所有数都是绝对值小于一的纯小数。对于绝对值大于一的数,如果直接使用定点小数格式将会产生“溢出”,所以需要根据实际需要使用一个“比例因子”,将原始数据按该比例缩小,以定点小数格式表示,得出的结果再按该比例扩大,才得到实际的结果。
            (2)浮点表示法:

              一个浮点数分为阶码和位数两部分,阶码用于表示小数点在该数中的位置,尾数用于表示数的有效数值。由于阶码表示小数点的位置,所以阶码总是一个(正,负)整数 ,尾数可以采用整数和纯小数两种形式 。(类似整数科学技术法);  N=234567*10^-3=2345670*10^-4=0.234567*10^3;
        计算机内部,阶码通常采用补码形式的二进制整数表示,尾数通常采用原码形式的二进制小数表示。阶码和尾数占用的位数可以灵活设定,阶码确定数的表示范围,尾数确定数的精度。所以有阶码位数多则范围大,尾数位数多则精度高。
 设计算机的字长为32则:     【一位】    【   八位  】   【二十三位】
                                       符号位      阶码部分         尾数部分
       其规格化浮点数表示范围为:_+1/2*2^-128~+-(1-2^-24)*2^127
   浮点表示法要注意,为提高精度通常规定其尾数的最高位必须是非零的有效位。这是浮点数的规格化形式。


  关于浮点数溢出:如果一个数的阶大于计算机所能表示的最大阶码,则称为上溢,
小于计算机所能表示的最小阶码,则为下溢。上溢时计算机无法继续运算,应该以溢出中断处理。下溢时计算机将该数作为机器零来处理。