我們在看java源碼的時候,經常能看到通過位操作構造的常量。爲了更好理解源碼,我會把這些值打印出來(人肉運算估結果的旁友請忽略)。這個時候就需要用到這個方法了。java的Integer類是自帶int轉二進制字符串的,但是這個方法轉換出來的二進制字符串只會保留最高非零位以後的字符串,不滿32位。因此我再給他補個0就行。非常簡單,自己做個記錄,也方便他人。
根據自己需要傳入位數。
//i 期望轉換的整數 bitNum 期望轉換的二進制字符串位數
public class IntToBinary32Utils {
public static String intToBinary32(int i, int bitNum){
String binaryStr = Integer.toBinaryString(i);
while(binaryStr.length() < bitNum){
binaryStr = "0"+binaryStr;
}
return binaryStr;
}
}
測試:
public class WhtTest {
private static final int COUNT_BITS = Integer.SIZE - 3;
private static final int RUNNING = -1 << COUNT_BITS;//111
private static final int SHUTDOWN = 0 << COUNT_BITS;//000
private static final int STOP = 1 << COUNT_BITS;//001
private static final int TIDYING = 2 << COUNT_BITS;//010
private static final int TERMINATED = 3 << COUNT_BITS;//011
private static final int CAPACITY = (1 << COUNT_BITS) - 1;
public static void main(String[] args){
System.out.println("RUNNING :"+IntToBinary32Utils.intToBinary32(RUNNING,32));
System.out.println("SHUTDOWN :"+IntToBinary32Utils.intToBinary32(SHUTDOWN,32));
System.out.println("STOP :"+IntToBinary32Utils.intToBinary32(STOP,32));
System.out.println("TIDYING :"+IntToBinary32Utils.intToBinary32(TIDYING,32));
System.out.println("TERMINATED:"+IntToBinary32Utils.intToBinary32(TERMINATED,32));
System.out.println("CAPACITY :"+IntToBinary32Utils.intToBinary32(CAPACITY,32));
}
}
輸出: