阅读背景:

Java 源码解析:十进制转二进制

来源:互联网 

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)];
	      // >>>无符号右移操作符 无符号为正还是为负 都在高位插入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);
	}



static final char[] digits = { "0", "1", "2", "3




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: