1

这些天来,我正在尝试研究 JVM 字节码。FNEG我在 wikipedia 上找到了名为 describe 的操作码: use to negate a float. 到底有什么好处呢?我尝试在普通 Java 代码中对变量进行取反,Eclipse 向我报告错误,即对于浮点类型的参数未定义否定运算符。那么它是干什么用的呢?我该如何使用它?

4

1 回答 1

6
public class temp {
    public static void main(String[] args) {
        float a = 1.0f;
        a = -a;
        System.out.println(a);
    }
}

javap -c temp给出:

Compiled from "temp.java"
public class temp extends java.lang.Object{
public temp();
  Code:
   0:   aload_0
   1:   invokespecial   #8; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   fconst_1
   1:   fstore_1
   2:   fload_1
   3:   fneg
   4:   fstore_1
   5:   getstatic       #16; //Field java/lang/System.out:Ljava/io/PrintStream;
   8:   fload_1
   9:   invokevirtual   #22; //Method java/io/PrintStream.println:(F)V
   12:  return

}

参见 3:对于 fneg,标准 javac。

于 2013-02-03T14:43:51.687 回答