BitSetの値をintで表現する
2006/12/20
java
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;
}
* 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;
}
}
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
: