JAVA列挙基本動作、元のコードとの深い理解の動作のためのアンチコードの補数の理解

列挙型の素人の理解

  コードの一部を見てください:

列挙サイズ{SMALL、MEDIUM ,, LARGE};
 パブリック クラスEnumTest { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        サイズS = Size.SMALL; 
        サイズT = Size.LARGE;
         // T Sとが同じオブジェクトを参照?
        System.out.printlnは(Sの== tの);   // falseを
         // プリミティブデータ型?
        System.out.println(s.getClass()isPrimitive()); // falseに
         // 文字列から変換 
        サイズSize.valueOf U =( "SMALL" ); 
        System.out.printlnは(S == U) ;   // trueに
         //これは、すべての値が一覧表示
        のための(サイズ値:Size.values()){ 
            System.out.printlnは(値); // 列挙型の順次出力値
        } 
    } 

}

まず、我々は列挙クラスのサイズを定義し、メイン機能で2つのオブジェクトを定義し、SMALLとLARGEに割り当てられていました

まず、彼らは同じオブジェクトであるかどうかを判断しますか?結果:FALSE

第2の出力は、彼があるということであるプリミティブデータが入力し、それを?結果:FALSE

第三の一般的な列挙オブジェクトに文字列を変換し、その後そして、彼は同じ最初に定義されたオブジェクトとして列挙されたか否かを判断しますか?結果:TRUE

第によってforeach文、および列挙の方法値()に実装列挙型部材アレイ形式を戻し、順次列挙子の値を出力します。

上記のプログラム例を介して、お知らせ、列挙型は参照型、それぞれの特定の値は、特定のオブジェクトを参照し、同一の値が同じオブジェクトを参照して、S == Uの場合と同じです。

:列挙型の方法があるORDINAL()のインデックス列挙体を得るために使用されるのSystem.out.println(t.ordinal());結果は:のコードは、例えば、2

:また、順序の定義で列挙二つのオブジェクトと比較することができるのcompareTo()、例えば:;のSystem.out.println(サイズQ = Size.MEDIUM q.compareTo(T))を、 結果は:-1、物体Qため値t目標値よりも小さいと、2つの添え字を減算するために使用します。

加えて:あなたはまた、中にできる新しいメソッドを追加する列挙型

列挙カラー{   
    RED( "赤"、1)、GREEN( "緑色"、2)、BLANK( "白"、3)、YELLO( "黄色"、4 );  
     // メンバ変数   
    プライベート文字列名;  
     プライベート int型のインデックス;  
     // コンストラクタ   
    プライベートカラー(文字列名、int型のインデックス){  
         この .nameの= 名;  
         この .INDEX = 指数;   
    }   
    // 対応するインデックス名を見つける   
    パブリック 静的文字列のgetName(int型のインデックス){  
         (C色: Color.values()){  
             IF(c.getIndex()== インデックス){  
                 戻りc.name。  
            }   
        }   
        戻り ヌル
    }   
    //は、メソッド設定を取得   
    公共の文字列のgetName(){  
         返す名前を。  
    }   
    公共 ボイドのsetName(文字列名){  
         この .nameの= 名前。  
    }   
    公共 のint getIndex(){  
         リターン指数。  
    }   
    公共 ボイド setIndex(int型のインデックス){  
         この .INDEX =インデックス。  
    }   
}   
パブリック クラス列挙{
     公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ 
        色A = Color.RED。
        System.out.println(Color.getName( 2 ))。
        System.out.println(a.getName() +」「+ a.getIndex()); 
        
    } 

}

列挙型にプライベートデータを追加:インデックス名はとも名に対応するインデックスを見つけるためにメソッドを追加し、新しい方法を達成するために、主な機能に列挙クラスを呼び出します。

出力は次のようになります。

グリーン
レッド1

元のコード、アンチコード相補体

オリジナルコードは:マシンの数の最も簡単な表現です。符号ビットMSBを表し、「1」、負の符号を示し、「0」の正の数を表します他のビットは、バイナリ数の絶対値を格納します。

ここでは簡単な栗は以下のとおりです。

彼は最初の正の数であり、=その和を計算するバイナリ方式に従っていること。1 * 2、最上位ビットが「0」である0101 2 + * 2 0 1 + 1 * 2 0 = 6、二進数よう6であります

(1 * 2 -最上位ビットは、彼は負の最初であることを、 '1'である1111は、次いで、計算する= SUMと同じ方法に従った2 + 1 2× 1 + 1×2 0) = - 。、7ようにバイナリ代表者の数は-7

表には、さらに元のコードを理解するのに役立ちます

 

抗コード:陽性抗コードは、元のコードに等しく、反転負の符号ビットを除いて、彼の元のコードであり、他のビットが反転される(例:オリジナル> 0 1-ある場合、元々 0-> 1)

例えば:-5進数に対応するである:彼1101が反転される:1010年

観察されるために、いくつかの抗コード番号

補足:彼の元のコードに等しい正の補数、彼の+1反転に等しい負の補数、符号ビット不変

たとえば、次の2進数-5:1101抗コード:1010補体:1011

、ビット単位〜ビットごとのXOR ^ |&ビット単位のAND、ビット単位または終了:基本的な概念は、それが計算されているかの数字ビットコンピューティングのいくつかを見てみましょう

  &ビット単位:2つの数の対応するビットが1である場合、結果は1でした。

パブリック クラスMA { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ
        INT A = 4、B = 5 
        System.out.println(AB)。
    } 

}

4:どのように多くの結果を推測します。

二つの数字ならば、正と負のそれ?

パブリック クラスMA { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ
        INT A = 2、B = -5 
        System.out.println(AB)。
    } 

}

あなたの答えはない:0、おめでとう、あなたはそれが間違ってました、実際の出力は次のとおりです。2。

なぜ?元のコード番号CKSコンピュータので、反転、相補的コードは同じであり、負に有効にするために同じ、減算演算ではない、でJAVA全ての数は、店舗に相補です。

私たちは数学を行うことができると信じていません。

0010:2を補完

-5オリジナルコード:1101、抗コード:1010補体:1011

0010&1011 = 0010結果は2である、と答えが正解です。

  ビット単位または2つのオペランドの対応するビットが0である、結果は0、1、さもなければです。

パブリック クラスMA { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ
        INT A = 2、B = -5 
        System.out.println( | B)。
    } 

}

私は、この数はどのくらいあると思いますか?

答えは:-5

0010:2を補完

-5オリジナルコード:1101、抗コード:1010補体:1011

0010 | = 1011 1011 1011は、彼がマイナスだったことを証明するために、符号ビットが「1」であることがわかりますが、店舗への負の補数の形をしているので、我々は彼が戻す与えます

1011 - > 1010 - > 1101の結果:-5正解

  ビット単位:〜バイナリのオペランドを修正0,0 1に変更されます

  ビット単位のXOR:^ビットオペランドは、同時に2つの位相0で表される、そうでなければ1

③文字列接続のヒント

パブリック クラスのテスト{ 
    
公共 静的 ボイドメイン(文字列[]引数){
         int型 X = 100 int型 Y = 200 ; 
    System.out.println( "X + Y =" + X + Y)。
    System.out.println(X + Y + "= X + Y" )。
    } 
}

出力:

X + Y = 100200
300 = X + Y

文字列変数相+は、新しい文字列を形成する場合には

場合は、変数のための第1の位相+、意志第1の数値の和、その後、接続文字列  

おすすめ

転載: www.cnblogs.com/xiaofengzai/p/11544442.html