Javaのビットコンピューティングについての講演

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/u010695794/article/details/88262159

この記事では、最初の個人的なマイクロチャネル公共番号に登場し、あなたの注意を楽しみにして「andyqian」〜

序文

   我々は、すべての複雑な、コンピュータの世界であることを知って、その後、最終的には米国のプログラムは、0と1になります。つまり、私たちはしばしば言う:バイナリバイナリ私たちは精通していると信じています。違いは、現実の世界と、現実の世界では、我々は通常、小数点以下の場合には、小数、と表現されていることである、これらは私たちに精通しています。ここで、我々は同じではありませんコンピュータ進小数計量単位と現実の世界への手がかりを見つけるでしょう。そして、どのようにそれらの間で変換するには?これは、より基本的なコンピュータの知識の一部を必要とします。私たちは(興味があれば、あなたは次の時間について話すことができます)この資料に記載されていません。ああ、戻って今日のトピックには、ビットコンピューティング、これは概念の一種でありますか?我々は、これらの算術演算の現実の世界との接触、つまり、10進法計算に入って来た持って来られました。私たちが言っている今日は:いくつかの一般的な操作のビット。例えば:・(ビット)|(又はビット)  、^ (XOR) <<(左シフト)>>(右)  など。

真と偽

  オペレータの使用を行う前に、我々は次の真と偽のことを言う必要があります。Javaでは、私たちは皆知っている、真真、偽の値が示す値がfalseを表します。実際には、コンピュータで、通常1 0、真のために偽のために。使用済みのJSON学生は1もtrueにデシリアライズすることができます使用して、Javaのboolean型ことを知っている必要があり、0はfalseにデシリアライズさ。

&(ビット)

   我々がよく知っているとしましょう、と言って前のビット  &&  論理AND演算。要するに:&& Bは:場合、AとBが真と偽の確立しながら、さもなければ。それは呼ばれていた:「偽は偽でなければなりません。」

今、私たちは、位置を見てください。まずは、プログラムを見てみましょう:

 @Test
    public void testBit(){
        int a = 8;
        int b = 9;
        System.out.println("a binary: "+Integer.toBinaryString(a));
        System.out.println("b binary: "+Integer.toBinaryString(b));
        System.out.println("a & b binary: "+Integer.toBinaryString(a&b));
        System.out.println("a & b result: "+(a&b));
    }

前に説明したように見え、の結果はどのくらいだと思いましょうか?

コードの説明

ビットと:私たちまで理解の文字通りの意味から、だけでなく、ビット操作。

  1. 8進数は以下のとおりです。1000年。

  2. 1001:10進数の桁が9です。

 

私たちは、運転中に配置することがあります:

次のように:

8:1000
9:1001
&
8  1000

&左端1 = 1、0&中央0 = 0、0&右端= 0 1。

バイナリ結果:1000は、8を10進数に変換しました。

次のようにプログラムの結果は以下のとおりです。

a binary: 1000
b binary: 1001
a & b binary: 1000
a & b result: 8

結果は予想に沿ったものです。

|(またはビット)

  それは言う  &(ビット)  の操作、そして今、我々は動作位置を見てみましょうか、上記の例を継続して使用する:次のように:

 @Test
    public void testBit(){
        int a = 8;
        int b = 9;
        System.out.println("a binary: "+Integer.toBinaryString(a));
        System.out.println("b binary: "+Integer.toBinaryString(b));
        System.out.println("a & b binary: "+Integer.toBinaryString(a|b));
        System.out.println("a & b result: "+(a|b));
    }

バイナリを見てください:

8:1000
9:1001
|
9  1001

左端の1 | = 1、0の真ん中| 0 = 0、右端の0 | 1 = 1。

バイナリの結果:1001は9進に対応します。

次のように計算結果は以下のとおりです。

a binary: 1000
b binary: 1001
a & b binary: 1001
a & b result: 9

^(排他OR)

  異なる:この演算子はもっと面白い、イソブチルは文字通り理解されています。内部で動作するビットが同じです。上記の例を使用して続行します。

@Test
    public void testBit(){
        int a = 8;
        int b = 9;
        System.out.println("a binary: "+Integer.toBinaryString(a));
        System.out.println("b binary: "+Integer.toBinaryString(b));
        System.out.println("a & b binary: "+Integer.toBinaryString(a^b));
        System.out.println("a & b result: "+(a^b));
    }

バイナリを見て続行します。

8:1000
9:1001
^
1  0001

フェーズ偽ながら、同時にテイクでは真実ではありません。1 = 0であり、残す取る左に同じです。中間はまた、0 0 = 0はfalseです。右端の0が1に等しい、真ではありません。結果も1。

<<左

  現実の世界では、私たちはしばしば乗算を使用しています。<<バイナリシフト演算、低0を示しています。たとえば、次の8 << 1。

@Test
    public void testCode(){
        int a =8;
        System.out.println("a toBinaryString: "+Integer.toBinaryString(a));
        System.out.println("a<<1 toBinaryString: "+Integer.toBinaryString(a<<1));
        System.out.println("result: "+(a<<1));

:次のようにバイナリ

8  1000
8<<1
16 10000

結果:2 ^ 4 = 16。<<ビット数が移動する場所を必要と右に、ベースの左側を表します。矢印は側が変位する側を指します。プログラムの結果:

a toBiryString: 1000
a<<1 toBinaryString: 10000
result: 16

>>右

  >>(右)と左<<反対、高い0です。上記の例を続行します。

@Test
    public void testCode(){
        int a =8;
        System.out.println("a toBinaryString: "+Integer.toBinaryString(a));
        System.out.println("1>>a toBinaryString: "+Integer.toBinaryString(a>>1));
        System.out.println("result: "+(a>>1)
    }

バイナリ:

8 : 1000
8>>1
4 : 0100

結果:

a toBinaryString: 1000
a>>1 toBinaryString: 100
result: 4

実際には、数式を覚えてすることは比較的容易であります。

A >> N示す:乗/(2 ^ n)を。(四捨五入)

<< Nの結果は次のとおり乗*(2 ^ N)。

今の高速カウントしてみましょう:

場合= 13、N = 2。<< 2 13 13 * 4 = 52に等しいです。13/4 = 3。

(彼女の顔を歓迎するために、間違っている場合は、高速アルゴリズムの上!!!)


 

   我々は、ソースと変位操作共通のアルゴリズムは、マスタビット・コンピューティングへのJavaプログラマが必要であり、非常に一般的です。理解することが、当社のアルゴリズム、ソースコードに非常に便利です!


 

関連読書:

ストアドプロシージャの行の数千人が感じました!"

道のソフトウェア。」

JPDA上のJava

MySQL権限についての話

                                                                                     スキャンコード進行とともに、関係

                                                                        個人ブログ:http://www.andyqian.com
 

おすすめ

転載: blog.csdn.net/u010695794/article/details/88262159