class="java" name="code">
static final char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
	public static String toBinaryString(int paramInt){
	    return toUnsignedString(paramInt, 1);
	}
	private static String toUnsignedString(int paramInt1, int paramInt2){
	    char[] arrayOfChar = new char[32];
	    int i = 32;
	    // 此处按二进制    1左移 1  位   为2
	    int j = 1 << paramInt2;
	    int k = j - 1;
	    do {
	      // paramInt1 & k   k=1,偶数 & 1 = 0,奇数 & 1 = 1
	      arrayOfChar[(--i)] = digits[(paramInt1 & k)];
	      // >>>无符号右移caozuofu.html" target="_blank">操作符 无符号为正还是为负 都在高位插入0
	      paramInt1 >>>= paramInt2;
	    }while (paramInt1 != 0);
	    // public String(byte[] bytes,int offset, int length)
		//	bytes - 要解码为字符的 byte
		//  offset - 要解码的第一个 byte 的索引
		//	length - 要解码的 byte 数 
	    // 从第offset的索引开始 解码长度为length
	    return new String(arrayOfChar, i, 32 - i);
	}
toBinaryString(2);//调用下分析
2的二进制为0000 0000 0000 0000 0000 0000 0000 0010
arrayOfChar[31] = digits[2&1] = '0'
	2 >>> 1 为  0000 0000 0000 0000 0000 0000 0000 0001 
	paramInt1 = 1
	arrayOfChar[30] = digits[1&1] = '1'
	1 >>> 1 为 0
	
循环终止
	
	new String(arrayOfChar,30,2) 其实就是new String(new char[2]) 
	char[0] = arrayOfChar[30]
	char[1] = arrayOfChar[31]
			
	返回String 10