源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中的Integer的toBinaryString()方法实例

  • 时间:2020-10-18 05:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中的Integer的toBinaryString()方法实例
在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出Integer类中的toBinaryString()方法 也就是说,把Integer转换为Binary的过程写出来 但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看 下面是我做的一个测试:
[u]复制代码[/u] 代码如下:
/**  *  */ 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] 所以:
[u]复制代码[/u] 代码如下:
final static char[] digits = {         '0' , '1'         };
方法里面用到了移位操作和&操作,这两个操作是关键。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部