黑马程序员技术交流社区

标题: java中的浮点型小数在计算机中如何用二进制表示 [打印本页]

作者: shi980088    时间: 2014-5-25 10:35
标题: java中的浮点型小数在计算机中如何用二进制表示
小数如何用二进制表示啊,
作者: 屋檐下的期待    时间: 2014-5-25 10:45
在计算机中,对于一般的数是采用定点数与浮点数两种方法来表示。

1.定点数

    所谓定点数是指小数点位置固定不变的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。
    定点整数:一个数的最高二进制位是数符位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位,如图所示:

0 1001010010001010001

         数符位            数值位                  小数位

因此,在一个定点整数中,数符位右边的所有二进制位数表示的是一个整数值。
    定点小数:一个数的最高二进制位是数符位,用来表示数的符号;而小数点的位置默认为在数符位后面,不单独占一个二进制位,如图所示:

0 1001010010001010001


           数符位|小数位         数值位               

因此,在一个定点小数中,数符位右边的所有二进制位数表示的是一个纯小数。

2.浮点数

    在计算机中,定点数通常只用于表示整数或纯小数。而对于既有整数部分又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。
    在计算机中所说的浮点数就是指小数点位置不固定的数。一般地,一个既有整数部分又有小数部分的十进制数D可以表示成如下形式:

            D=R*10N
    其中R为一个纯小数,N为一个整数。
    如一个十进制数123.456可以表示成:0.123456*103,十进制小数0.00123456可以表示成0.123456*10-2。纯小数R的小数点后第一位一般为非零数字。
    同样,对于既有整数部分又有小数部分的二进制数口也可以表示成如下形式:

              D=R*2N

    其中R为一个二进制定点小数,称为D的尾数;N为一个二进制定点整数,称为D的阶码,它反映了二进制数D的小数点的实际位置。为了使有限的二进制位数能表示出最多的数字位数,定点小数R的小数点后的第一位(即符号位的后面一位)一般为非零数字(即为“1”)。
    在计算机中,通常用一串连续的二进制位来存放二进制浮点数,它的一般结构如图所示:

阶符 N 数符 R

            |     阶码部分    |  小数位  尾数部分

作者: hamiguadjs    时间: 2014-5-25 11:01
楼上的回答很全面,收藏了。
作者: 苏周周    时间: 2014-5-25 11:51
原来如此,接收了
作者: shi980088    时间: 2014-5-25 12:06
苏周周 发表于 2014-5-25 11:51
原来如此,接收了

:lol咱俩一个班的苏周周同学
作者: shi980088    时间: 2014-5-25 12:08
屋檐下的期待 发表于 2014-5-25 10:45
在计算机中,对于一般的数是采用定点数与浮点数两种方法来表示。

1.定点数

谢啦哥们,会打得非常全面
作者: 苏周周    时间: 2014-5-25 12:49
shi980088 发表于 2014-5-25 12:06
咱俩一个班的苏周周同学

:handshake
作者: Boonie_Bears-Te    时间: 2014-5-26 00:45
这个 你的小数为什么需要表示成二进制啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2