这是一个家庭作业问题,我完全没有想法(C编程)。
使用说明:
/*
* float_neg - Return bit-level equivalent of expression -f for
* floating point argument f.
* Both the argument and result are passed as unsigned int's, but
* they are to be interpreted as the bit-level representations of
* single-precision floating point values.
* When argument is NaN, return argument.
* Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while
* Max ops: 10
* Rating: 2
*/
unsigned float_neg(unsigned uf) {
return 2;我尝试过简单地返回-uf;以及其他的东西,但是我不知道该做什么。
帮助?
可假定下列条件:
-EDIT
解决办法:还uf^0x80000000;
发布于 2012-09-26 09:15:07
现在忽略了这个问题的荒谬之处,问题是询问浮点格式,大概是英特尔芯片使用的IEEE-754标准。32位的IEEE编号的二进制格式是:-

因此,否定这个值是微不足道的。在切换顶部位之前,您必须检查各种特定值: Nan、Inf等,这些都在IEEE规范中详细说明。
请注意,您可以有+0和-0。
简单地返回整数否定不会工作,因为它预先形成了2的补体否定,因此整数值1变成0 0xffffffff,当FPU解释这个值时,它将是一个非常不同的值。
https://stackoverflow.com/questions/12598205
复制相似问题