2015-04-02 29 views
9

java中獲取二進制整數的二進制表示形式爲固定位數的二進制數的最簡單方法是什麼(例如,如果我想將3與5位,那麼結果將是00011)。在matlab中,我可以將位數指定爲參數。int轉換爲具有固定位數的二進制數

+3

[左填充用字符串零「](http://stackoverflow.com/questions/4469717/left-padding-a-string-with-zeros)可能有助於解決這個問題,以及'Integer.toBinaryString(int)'。 – Obicere 2015-04-02 03:19:01

回答

3

要轉換n至位numbOfBits:

public static String intToBinary (int n, int numOfBits) { 
    String binary = ""; 
    for(int i = 0; i < numOfBits; ++i, n/=2) { 
     switch (n % 2) { 
     case 0: 
      binary = "0" + binary; 
     case 1: 
      binary = "1" + binary; 
     } 
    } 

    return binary; 
} 
+0

您在上面的代碼中忘記了您的** break; **聲明。您將在每0後添加1位。 – 2017-06-26 06:37:17

6

如果你想一個int轉換成它的二進制表示,你需要做的是:

String binaryIntInStr = Integer.toBinaryString(int); 

如果你想要得到的你需要這樣做:

int count = Integer.bitCount(int); 

但是你不能獲得一個整數的二進制表示作爲一個固定位數的二進制數,例如,7有3位,但你不能設置其位數爲2或1.因爲你贏了從2或1位數的二進制表示中獲得7。

+0

第一行將二進制整數轉換爲十進制數,然後將其解析爲二進制數。它如果是正確的,它什麼都不會做,但它是不正確的。 – EJP 2015-04-02 03:36:50

+0

@EJP我已經重新編輯答案,現在嗎? – SilentKnight 2015-04-02 03:49:34

10

這是一個簡單的方法:

String binaryString = Integer.toBinaryString(number); 
binaryString = binaryString.substring(binaryString.length() - numBits); 

是整數轉換和加numBits是固定位數你有興趣

+0

但是...我有「字符串索引超出範圍:-3」在這種情況下... – Line 2017-06-29 13:41:57

+0

然後,你可能想要:binaryString = binaryString.substring(binaryString.length() - numBits> = 0?binaryString.length ) - numBits:0); – alfreema 2017-06-30 02:56:11