2015-04-02 7 views
9

Was ist der einfachste Weg in Java, um die binäre Darstellung einer ganzen Zahl als eine Binärzahl mit einer festen Anzahl von Bits zu erhalten (Zum Beispiel wenn ich 3 konvertieren will mit 5 Bits wäre das Ergebnis 00011). In Matlab kann ich einfach die Anzahl der Bits als Argument angeben.Konvertieren eines int in ein binäres mit einer festen Anzahl von Bits

+3

[Links Polsterung ein String mit Nullen] (http://stackoverflow.com/questions/4469717/left-padding-a-string-with-zeros) könnte helfen, dies zu lösen, zusammen mit 'Integer.toBinaryString (int)'. – Obicere

Antwort

3

Um n zu numbOfBits von Bits konvertieren:

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

Sie haben Ihre ** break; ** - Anweisung im obigen Code vergessen. Sie fügen nach jeder 0 ein 1 Bit hinzu. –

6

Wenn Sie eine int in seine binäre Darstellung konvertieren möchten, müssen Sie dies tun:

String binaryIntInStr = Integer.toBinaryString(int); 

Wenn Sie das erhalten möchten Bitzahl von einem int, müssen Sie dies tun:

Aber du könntest die Binärdarstellung einer Ganzzahl nicht als Binärzahl mit einer festen Anzahl von Bits bekommen, zum Beispiel hat 7 3 Bits, aber du kannst seine Bitzahl 2 oder 1 nicht setzen. Weil du gewonnen hast Erhalten Sie 7 von seiner binären Darstellung mit 2 oder 1 Bit-Zählung.

+0

Die erste Zeile konvertiert die binäre Ganzzahl in Dezimal und analysiert sie dann als Binärdatei. Wenn es richtig war, würde es nichts tun, aber es ist nicht korrekt. – EJP

+0

@EJP Ich habe die Antwort neu editieren, ist es jetzt? – SilentKnight

10

Dies ist eine einfache Art und Weise.

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

Wo Nummer die ganze Zahl zu konvertieren und numBits ist die feste Anzahl von Bits, die Sie interessiert sind

+0

Aber ... Ich habe "String Index außerhalb des Bereichs: -3" in diesem Fall ... – Line

+0

Dann möchten Sie vielleicht: binaryString = binaryStringStringstring (binaryString.length() - numBits> = 0? BinaryString.length () - AnzahlBits: 0); – alfreema

Verwandte Themen