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

admin2018-08-17  34

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

将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE754单精度标准。
请回答下列问题。
f1(23)和f2(23)的返回值是否相等?机器数各是什么(用十六进制表示)?

选项

答案f1(23)与f2(23)的返回值相等。f(23)=223-1=224-1,它的二进制形式是24个1。int占32位,没有溢出。float有1个符号位,8个指数位,23个底数位,23个底数位可以表示24位的底数。所以两者返回值相等。 f1(23)的机器数是00FF FFFFH。 f2(23)的机器数是487F FFFFH。 显而易见前者是24个1,即0000 0000 1111 1111 1111 1111 1111 1111(2),后者符号位是0,指数位为23+127(10)=1001 0110(2),底数位是111 1111 1111 1111 1111 1111(2)

解析
转载请注明原文地址:https://jikaoti.com/ti/OCfjFFFM
0

最新回复(0)