2012年3月17日

bitデータの取り扱い

    private static boolean getBit(byte value, int bitIndex) {
        return (value & (1 << (7 - bitIndex))) != 0;
    }
    public static byte setBit(byte value, int bitIndex, boolean b) {
        byte result = value;
        if (b) {
            result |= (1 << (7 - bitIndex));
        } else {
            result &= ~(1 << (7 - bitIndex));
        }
        return result;
    }
できたコードをみると簡単だけど、なかなかすぐには思いつかない。 bitを扱うのに java.util.BitSetという便利なクラスがあった。 set()、get()の他にもBitSt同士の演算するand()、or()、xor()などがある。
ソースをみると、longの配列でデータを持ってるみたい。なるほど、それでデータの節約をしているんだね。

0 コメント:

コメントを投稿