1

最近、私は JVM バイトコードを研究しようとしています。FNEGウィキペディアに記載されているオペコードを見つけました: use to negate a float. それは何のために良いですか?通常の Java コードで変数の否定を実行しようとしましたが、Eclipse から、float 型の引数に対して否定演算子が定義されていないというエラーが報告されます。それで、それは何のためですか?どのように使用できますか?

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

}

fneg、標準 javac については、3: を参照してください。

于 2013-02-03T14:43:51.687 に答える