您现在的位置:首页 > 教案格式 > 正文

无穷 符号 11、定点数和浮点数(2)

2018-01-15 22:02 网络整理 教案网

目前我们需要表达“0”。这是一种特殊情况,下面对其进行说明:

·如果e=0且f=0,则该数为0.在这种情况下,通常把32位都设置为0以表示该数为0.但是符号位可以设置为1,这种数可以解释为负0.负0可以用来表示非常小的数,这些数极小以至于不能再单精度格式下用数字和指数来表示。但它仍然小于0.

·如果e=0,且f不等于0,则该数是合法的,但不是规范化的。可以表示为(-1)sx0.fx2-127。注意,在有效数中,小数点左边是0.

·如果e=255且f=0,则该数被解释为无穷大或无穷小。取决于符号位s的值。

·如果e=255且f不等于0,则该值被解释为“不是一个数”,通常被缩写为NaN。NaN用来表示位置的数或非法操作的结果。

单精度浮点格式下,可以表示的规格化的最小正、负二进制数是:

1.00000000000000000000000x2-126,小数点后面跟着23个二进制0.单精度浮点格式下,可以表示规格化的最大正、负二进制数是:

1.11111111111111111111111x2127,在十进制下,这两个数近似地等于1.175494352x10-38和3.402823466x1038,也就是单精度浮点数的有效表示范围。

如前所述,10位二进制数可以近似的用3位十进制数来表示。其含义是,如果把10位都置1,即十六进制的3FFh或十进制的1023,它近似等于把十进制的3位都置为9,即999,可以表示为下面的约等式:210=103

两者关系以为这,单精度浮点数格式存放的24位二进制数大体上与7位十进制数相等,因此,可以说单精度浮点格式提供24位的二进制精度或7位十进制精度。精度大概是1/224,或者百万分之六

如果用单精度浮点数来存放262144.00元和262144.01元,可以发现在计算机存储为同一个数:

1.00000000000000000000000x218,这就是人们在处理钱的时候更愿意用定点数的一个原因。

也会有一些崩溃的问题,如果你程序进行了一系列计算,应该得到的结果为3.5,由于使用浮点数,你得到的可能是3.499999999999。这种问题在浮点数运算中经常发生,而且没有一套完整的解决方案。

要解决上面问题,你可以考虑使用双精度浮点数,这种类型需要8个字节来表示,结构如下:

三角函数_x趋向于 等于无穷_无穷 符号

双精度浮点数的指数偏移量是1023或十六进制的3FFh,因此该格式存储的数可以表示为:

(-1)sx1.fx2e-1032.

上面提到的关于单精度浮点格式下的0,无穷大(小)和NaN的判断规则同样适用于双精度浮点格式。无穷 符号

双精度浮点格式下可以表示的最小正数或负数位:

1.0000000000000000000000000000000000000000000000000000x2-1022

后面有52个0,同样,可以表示最大为

1.1111111111111111111111111111111111111111111111111111x21023

十进制表示的范围是2.2250738585072014x10-308~1.17976931348623158x10308

双精度浮点格式的有效数有53位(包括前面没有列出的一位),大致相当于十进制的16位。与单精度浮点格式相比,这已经有了很大的改进,但仍然不能避免两个不同的数存储为同一个数的情况。例如:140737488355328.00和140737488355328.01。在内存中,两书会被当做同一个数来处理,他们的双精度浮点格式表示为:42E0000000000000h即1.0000000000000000000000000000000000000000000000000000x247