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