如何在给定的位数上将负BigInteger转换为二进制补码二进制字符串?

时间:2016-01-25 18:18:20

标签: java binary biginteger twos-complement

BigInteger b = new BigInteger("-5");
System.out.println(b.toString(2));

打印

-101

我想在给定的位数上得到二进制补码二进制代码,而不是带有-符号的正二进制字符串。

例如

BigInteger b = new BigInteger("-5");
System.out.println(b.toString(2, 4));//-5 on 4 bits in binary code

应显示

1011

BigInteger b = new BigInteger("-5");
System.out.println(b.toString(2, 5));//-5 on 4 bits in binary code

应显示

11011

1 个答案:

答案 0 :(得分:1)

据我所知BigInteger,这不存在。您需要自己构建这样的方法。

String toString(BigInteger bigInt, int bits){
    StringBuilder sb = new StringBuilder();
    for(int bit = bits - 1; bit >= 0; bit--)
        if(BigInteger.valueOf(1 << bit).and(bigInt).compareTo(BigInteger.ZERO) != 0)
            sb.append("1");
        else
            sb.append("0");       
    return sb.toString();
}