java中的Integer的toBinaryString()方法
2013-12-18 10:23
232 查看
在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出Integer类中的toBinaryString()方法
也就是说,把Integer转换为Binary的过程写出来
但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看
下面是我做的一个测试:
在代码中,其实我们可以简化一下digits数组,因为我们只会用到数组:digits[0],digits[1]
所以:
方法里面用到了移位操作和&操作,这两个操作是关键。
也就是说,把Integer转换为Binary的过程写出来
但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看
下面是我做的一个测试:
/** * */ package com.b510.test; /** * @author Hongten * @date 2013-12-15 */ public class TestF { public static void main(String[] args) { //output:1000 System.out.println(toBinaryString(8)); //printInfo(); } /** * 这里是做&操作的测试,也就是说,在1&*(其中*代表其他数字,如:0,1,2,3,4...)操作的时候 * 他们是进行二进制之间的&(与)运算操作。只有当*为奇数(1,3,5,7...)的时候,1*&操作才可以返回:1 * 其他情况返回:0 */ private static void printInfo(){ for(int i =0; i< 10; i++){ System.out.println("i= " + i + " "+(i & 1)); } /* output: i= 0 0 i= 1 1 i= 2 0 i= 3 1 i= 4 0 i= 5 1 i= 6 0 i= 7 1 i= 8 0 i= 9 1 */ } 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; int radix = 1 << shift; int mask = radix - 1; do { //这里的mask一直为:1,所以当i为奇数的时候,这里"i & mask"操作才为:1 //否则返回:0 //System.out.println(i & mask); buf[--charPos] = digits[i & mask]; i >>>= shift;//右移赋值,左边空出的位以0填充 //System.out.println(buf); //System.out.println(charPos); //System.out.println(i); } while (i != 0); return new String(buf, charPos, (32 - charPos)); } final static 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' }; }
在代码中,其实我们可以简化一下digits数组,因为我们只会用到数组:digits[0],digits[1]
所以:
final static char[] digits = { '0' , '1' };
方法里面用到了移位操作和&操作,这两个操作是关键。
相关文章推荐
- 1.1.9 java用二进制表示十进制整数(不用Integer.toBinaryString(N)方法)
- java中的Integer的toBinaryString()方法
- char与byte的区别,java中的Integer的toBinaryString()方法
- java中的Integer的toBinaryString()方法实例
- Java: Integer.toBinaryString(int i) 方法翻译详解
- java.lang.Long.toBinaryString()方法实例
- java.lang.Integer cannot be cast to java.lang.String
- LeetCode 8 — String to Integer (atoi)(C++ Java Python)
- Java String.compareTo()方法
- java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
- leetcode String to Integer (atoi)(Java)
- Java之所有对象的公用方法>10.Always override toString
- java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
- LeetCode – String to Integer (atoi) (Java)
- java String 转 Integer 方法
- [LeetCode][Java] String to Integer (atoi)
- Leet Code 8 String to Integer - 字符串转整数 - Java
- LeetCode : String to Integer (atoi) [java]
- java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
- java.lang.Integer.toHexString()方法