public static String toBinaryString(int i) {
return toUnsignedString(i, 1);
}
/**
* Convert the integer to an unsigned number.//返回一个无符号整形数字
*/
private static String toUnsignedString(int i, int shift)//返回一个无符号字符串(实现十进制转二进制) {
char[] buf = new char[32];//创建一个数组
int charPos = 32;//buf数组长度
int radix = 1 << shift;//将1左移shift(1)个位置并赋值给radix
int mask = radix - 1;//mask=2-1;
do {
buf[--charPos] = digits[i & mask];//二进制与运算,不知道这个digits是什么意思,难道是实现0和1的值?
i >>>= shift;//将i右移shift(1)个位置
} while (i != 0);//判断i是否为零,为零则结束循环
return new String(buf, charPos, (32 - charPos));//String(char[] value, int offset, int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
//例子:char[] a={'0','0','1','1','0'};System.out.println(new String(a,0,3));结果:001
} |