BitSetの値をintで表現する 2006/12/20

javaにはビット操作のためにjava.util.BitSetクラスが用意されています。

シナリオ:

ビット操作はBitSetで行いたいが、その値の受けわたしはint値で行いたい


BitSetの値をint値にしてみます。

/**
* BitSetをint値で表現します。
* @param bitSet
* @return
*/
public static int toint(BitSet bitSet){
int ret = 0;
for(int i=31;0<=i;i--){
ret |=(bitSet.get(i)?1:0)<<i;
}
return ret;
}



簡単なテスト
import java.util.BitSet;
public class TestBitset {

public static void main(String[] args) {
min();
max();
}

static void min(){
System.out.println("MIN_VALUE");
BitSet bitSet = new BitSet();
bitSet.set(31);
System.out.println(toint(bitSet));
System.out.println(Integer.MIN_VALUE);
}

static void max(){
System.out.println("MAX_VALUE");
BitSet bitSet = new BitSet();
for(int i=0;i<31;i++){
bitSet.set(i);
}

System.out.println(toint(bitSet));
System.out.println(Integer.MAX_VALUE);
}
/**
* BitSetをint値で表現します。
* @param bitSet
* @return
*/
public static int toint(BitSet bitSet){
int ret = 0;
for(int i=31;0<=i;i--){
ret |=(bitSet.get(i)?1:0)<<i;
}
return ret;
}
}


結果
MIN_VALUE
-2147483648
-2147483648
MAX_VALUE
2147483647
2147483647

: