私は最近いくつかのOpenJDKコードを参照していますが、ビット単位の操作に関係する興味深いコードを見つけました。StackOverflowで質問したこともあります。
ポイントを説明する別の例:
1141 public static int bitCount(int i) {
1142 // HD, Figure 5-2
1143 i = i - ((i >>> 1) & 0x55555555);
1144 i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
1145 i = (i + (i >>> 4)) & 0x0f0f0f0f;
1146 i = i + (i >>> 8);
1147 i = i + (i >>> 16);
1148 return i & 0x3f;
1149 }
このコードはIntegerクラスにあります。
これを見ると、私は愚かな気持ちにならざるを得ません。大学で1つまたは2つのクラスを欠席しましたか、それとも私がちょうど取得することになっているものではありませんか?単純なビット単位の操作(ANDing、ORing、XORing、shiftなど)を実行できますが、上記のようなコードはどのように思い付きますか?
バランスの取れたプログラマーは、ビット単位の操作をどの程度必要としますか?
副次的注意事項... 私が心配しているのは、StackOverflowで私の質問に答えた人が数分で答えたということです。彼がそれをできたら、なぜ私はヘッドライトで鹿のようにじっと見つめたのでしょうか?
>>>
オペレーターですか?
// HD, Figure 5-2
私が見たいと思う最初のものです。ファイルの冒頭のコメントによると、HD
ですHenry S. Warren, Jr.'s Hacker's Delight
。