Java中的位运算
最近饶有兴致,看了一些java源代码,发现源码里面一些精巧的实现是通过位运算实现的,比如十进制整数转成十六进制形式字符串输出: 1 public static String toHexString(int i) 2 { 3 return toUnsignedString(i, 4); 4 } 5 6 private static String toUnsignedString(int i, int shift) { 7 char[] buf = new char[32]; 8 int charPos = 32; 9 int radix = 1 << shift; 10 int mask = radix - 1; 11 do { 12 buf[--charPos] = digits[i & mask]; 13 i >>>= shift; 14 } while (i != 0); 15 16 return new String(buf, charPos, (32 - charPos)); 17 } 18 19 final static char[] digits = { 20 '0' , '1' , '2' , '3' , '4' , '5' , 21 '6' , '7' , '8' , '9' , 'a' , 'b' , 22 'c' , 'd' , 'e' , 'f' , 'g