己知f(n)=,计算f(n)的C语言函数f1如下: 将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE754单精度标准。 请回答下列问题。 f(31)=232-1,

admin2018-08-17  38

问题 己知f(n)=,计算f(n)的C语言函数f1如下:

将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE754单精度标准。
请回答下列问题。
f(31)=232-1,而f1(31)的返回值却为-1,为什么?若使f1(n)的返回值与f(n)相等,则最大的n是多少?

选项

答案显然f(31)已超出了int型数据的表示范围,用f1(31)实现时得到的机器数为32个1,作为inl型数解释时其值为-1,即f1(31)的返回值为-1。因为int型最大可表示数是0后面加31个1,故使f1(n)的返回值与f(n)相等的最大n值是30。

解析
转载请注明原文地址:https://kaotiyun.com/show/1SRi777K
0

最新回复(0)