Methoden ByteBuffer - Anzahl führender Nullen

infaktor

Neues Mitglied
Hallo Leute,

ich habe folgende Frage wie kann ich aus Binärzahl die Anzahl führender Nullen auslesen? Ich bin auf ByteBuffer gestoßen, weiß aber nicht wie ich es nun umsetze. Ich möchte die Zahl in Dezimal- und in Binärsystem ausgeben und aus Binärzahl wie oben schon geschrieben die Anzahl führender Nullen anzeigen.
Danke für die Hilfe.

Java:
int zahl = 11;

System.out.println(Integer.toBinaryString(zahl));
 
Im Moment gibt es "gar keine" führenden Nullen. Der String den
Code:
Integer.toBinaryString(zahl)
zurückgibt, beginnt immer mit einer 1:
Code:
11 --> "1011"
51 --> "110011"
1023951 --> "11111001111111001111"
...
Ich denke mal, du willst die Zahl mit führenden Nullen ausfüllen, also z.B. aus
Code:
1011
Code:
00001011
machen.
Dazu musst du nur die Länge des Binär-Strings herausfinden, und dann eine Maximale Länge (z.B. 8 oder 16) festlegen:
Java:
int zahl = 13;
String binaer = Integer.toBinaryString(zahl);
int laenge = binaer.length();
int maxLaenge = 8;
int fuehrendeNullen = maxLaenge - laenge;

Dann kannst du z.B. mit einer Schleife die Nullen darstellen, oder mit der Anzahl irgendwas anderes machen.
 
Ja, ich muss die Frage konkreter stellen. :bloed:

ich brauche int 32 in Binär als 00100000 bzw. int 127 in Binär 0111 1111. Wie Du es richtig sagst die Variante
Java:
Integer.toBinaryString
liefert die Ergebnisse erst ab 1.
Wenn ich die for-Schleife baue auf diese Weise:
Java:
for (int zahl = 32; zahl <= 127; zahl++) {
System.out.println(zahl);
System.out.println(Integer.toBinaryString(zahl));
}

Wie führe ich dann dein Code nach dem Ersten
Java:
System.out.println
aus?

Und mit Anzahl führender Nullen (count leading zeros (clz) or number of leading zeros (nlz)) meinte ich wirklich die genaue Anzahl von 0, wie z. Bsp.: bei 00100000 -> 2 und bei 0111 1111 -> 1 :rtfm:

Danke!
 
So würde da zum Beispiel auch funktionieren, insofern ich deine ziemlich strange formulierte Frage richtig verstanden habe 😀

Java:
public class Foo {

	public static String convertToBinary(int value){
		
		StringBuilder builder = new StringBuilder();
		int maxLenght = 32; // frei wählbare länge
		
		String output = String.valueOf(Integer.toBinaryString(value));
				
		while(builder.length() + output.length() < maxLenght) {
			builder.append("0");
		}
		
		
		return String.valueOf(builder + output); // oder .append(output)
	}

	public static void main(String[] args) {
		
		System.out.println(Foo.convertToBinary(12));
	}	
}

Ausgabe für 32 bit:

00000000000000000000000000001100
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben