Java Integer.toBinaryString()十进制转成二进制

java中Integer.toBinaryString()用于将十进制转成二进制输出。

定义

String toBinaryString(int i)   //以2为基返回整数参数的字符串表示形式,表示为无符号整数

也就是将传入的数值十进制转成二进制

源码

public static String toBinaryString(int i) {
     return toUnsignedString0(i, 1);
}
private static String toUnsignedString0(int val, int shift) {
	// assert shift > 0 && shift <=5 : "Illegal shift value";
    //计算这个int转换成二进制后占多少bit(123-->>7)
	int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val);
	//用于确定最后生成的字符串有几个字符
	int chars = Math.max(((mag + (shift - 1)) / shift), 1);
	char[] buf = new char[chars];
	//具体解析出每个字符是什么
	formatUnsignedInt(val, shift, buf, 0, chars);

	// Use special constructor which takes over "buf".
	return new String(buf, true);
}
static int formatUnsignedInt(int val, int shift, char[] buf, int offset, int len) {
	int charPos = len;
	int radix = 1 << shift;//2^shift (此例子是2^4)
	int mask = radix - 1; //(16进制-->>15  8进制-->>7)
	do {
		//val&mask  相当于  val%(mask+1)  这里是 123%16
		buf[offset + --charPos] = Integer.digits[val & mask];
		val >>>= shift;
	} while (val != 0 && charPos > 0);

	return charPos;
}

例子

public class IntegerToBinaryStringDemo {
	public static void main(String[] args) {
	    byte a=-1;
	    System.out.println("-1 bin  : "+  Integer.toBinaryString(a));
            System.out.println("-1&0xff bin: "+ Integer.toBinaryString(a&0xff));

            System.out.println("127 bin    : "+ Integer.toBinaryString(127));
            System.out.println("-128 bin   : "+  Integer.toBinaryString(-128));
            System.out.println("十进制转二进制:"+Integer.toBinaryString(120));
	}
}
输出:
-1 bin  : 11111111111111111111111111111111
-1&0xff bin: 11111111

127 bin    : 1111111
-128 bin   : 11111111111111111111111110000000
十进制转二进制:1111000