📜  门| GATE-CS-2000 |问题 37

📅  最后修改于: 2021-09-25 05:03:00             🧑  作者: Mango

考虑值 A = 2.0 x 10 30 ,B =-2.0 x 10 30 ,C= 1.0,以及序列

X: = A + B    Y: = A + C
X: = X + C    Y: = Y + B 

在用 32 位表示浮点数的计算机上执行。 X 和 Y 的值将是
(A) X = 1.0, Y = 1.0
(B) X = 1.0,Y = 0.0
(C) X = 0.0, Y = 1.0
(D) X = 0.0, Y = 0.0答案:(乙)
说明:给定 32 位表示。因此,最大精度可以是 32 位。
因此,A + C 应该使第 31 位为 1,这肯定超出了 A 的精度级别(它是第 31 位而不是第 31 位)。所以,这个加法只会返回分配给 Y 的 A 的值。
因此,Y + B 将返回 0.0,而 X + C 将返回 1.0。

请注意,2000 和 2*10^3 表示存在差异。结果取决于幅度部分的可用位数。我们不能在指数部分调整幅度。

所以,选项(B)是正确的。

此解释由Piyush Doorwar 提供。
这个问题的测验