Java 源码解析:十进制转二进制_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java 源码解析:十进制转二进制

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

 2016/5/12 5:32:18  感受微风  程序员俱乐部  我要评论(0)
  • 摘要:staticfinalchar[]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'};publicstaticStringtoBinaryString(intparamInt){returntoUnsignedString(paramInt,1
  • 标签:源码 Java 解析 二进制
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
发表评论
用户名: 匿名