国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 15:50:58
字體:
來源:轉載
供稿:網友

在一次面試的過程中,遇到過這樣的題目,題目的大概意思是:讓寫出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'
        };

方法里面用到了移位操作和&操作,這兩個操作是關鍵。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 留坝县| 马龙县| 华亭县| 特克斯县| 永康市| 和平区| 奉新县| 乌拉特后旗| 兰西县| 磴口县| 洛宁县| 乡宁县| 商都县| 融水| 青田县| 乌什县| 崇礼县| 宝清县| 永清县| 济宁市| 克什克腾旗| 建平县| 班玛县| 巨野县| 门头沟区| 兰考县| 桐梓县| 白城市| 铁岭县| 磐安县| 蚌埠市| 贵州省| 冕宁县| 宁乡县| 珠海市| 玉山县| 林周县| 呼玛县| 周宁县| 西昌市| 西贡区|