ksaitoの日記

日々試したことの覚え書き

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