java

BigInteger

Javaでは、int型で表せない大きな値を扱うためにBigIntegerというクラスが提供されています。
Javaの場合、演算子をオーバライドできないので計算は、すべてメソッド呼び出しとなりますが2進数の桁数や、2進数で1が立っている数を調べることができます。

    public static void main( String[] args )
{
String[] bn = { "4", "10000000000000000000000000000000000" };
System.out.println( "Hello BigInteger!" );
BigInteger bi;
for (int i=0; i < bn.length; i++) {
bi = new BigInteger(bn[i]);
System.out.println(String.format("数:%s, 2進数表現での桁数:%d, 2進数表現でビットが1の数:%d", bi, bi.bitLength(), bi.bitCount()));
System.out.println(String.format("数:%s, 2新数表現:%s", bi, bi.toString(2)));
}
}

実行結果は、こんな感じ

Hello BigInteger!
数:4, 2進数表現での桁数:3, 2進数表現でビットが1の数:1
数:4, 2新数表現:100
数:10000000000000000000000000000000000, 2進数表現での桁数:113, 2進数表現でビットが1の数:42
数:10000000000000000000000000000000000, 2新数表現:11110110100001001101111101010110110000111110000000011011110001101100011100110010000000000000000000000000000000000
タイトルとURLをコピーしました