2016-11-06 7 views
-3

私はJavaのbitwiseとbitshift演算子を理解しますを行いますが、実際の使用方法はわかりません。たとえば、 "〜、< <、>>> >>>、&、^、|"の値を変更または比較すると便利なのはいつですか?JavaのBitwiseおよびBitshift演算子の機能は何ですか?

+0

誰かが「乗算に実際に使用されるものは何か」と尋ねられたら、あなたの答えは何だろうと考えてください。私は「あなたは時々それを必要とする」以外に何を言いたいのか分からない。ビット単位の操作でも同じです。 – harold

答えて

0

ビットフィールド(フラグ)

彼らはその状態がいくつかの「yesまたはno」プロパティで定義されて何かを表現する最も効率的な方法です。 ACLは良い例です。 4つの個別のパーミッション(読み込み、書き込み、実行、変更ポリシー)を言うならば、無駄ではなく1バイトに格納する方が良いでしょう。これらは、利便性を高めるために多くの言語で列挙型にマップできます。ポート/ソケット

通信は常にので、数値とは対照的に、通常、個々のバイトの論理値に依存チェックサム、パリティ、ようにビット、フロー制御アルゴリズム、および停止を含みます媒体は、一度に1ビットを送信することしかできない。

圧縮、暗号化

これらの両方が、ビット単位のアルゴリズムに大きく依存しています。例のdeflateアルゴリズムを見てください。すべてがビットであり、バイトではありません。

有限状態機械

彼らはあまりにもソフトウェアで見つけることができますが、私は、ハードウェアのいくつかの部分に埋め込まれた種類の、主に話しています。これらは、自然の中で、組み合わせている - など、彼らは文字通りダウン論理ゲートの束を「コンパイル」取得される可能性がありますので、彼らはのように表現する必要がAND、OR、NOT

グラフィック

ほとんどありませんグラフィックスプログラミングでこれらの演算子が使用されているすべての領域に入るには十分なスペースが必要です。 XOR(または^)は、同じ入力を2回適用すると最初のものを元に戻すので特に興味深いです。高価な再描画の必要性を排除するために、古いGUIでは選択ハイライトやその他のオーバーレイにこれを使用していました。遅いグラフィックスプロトコル(つまり、リモートデスクトップ)でもまだ便利です。

これは私が思いついた最初の数例にすぎません。これは徹底的なリストではありません。

関連する問題