当前位置: 移动技术网 > IT编程>开发语言>Java > java中的Integer的toBinaryString()方法实例

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出integer类中的tobinarystring()方法 也就是说,把integer转换为binary的过程

在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出integer类中的tobinarystring()方法

也就是说,把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'
        };

方法里面用到了移位操作和&操作,这两个操作是关键。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网