Java alle möglichen Kombinationen von 6 Bits ausgeben in Java?

4 Antworten

Bei Zahlen mit weniger als 10 Stellen, kannst du die Binärrepresentation der Zahl in einem int speichern und dann einfach mit printf oder String.format vorgeben, wie lang die Zahl sein soll und dass sie mit führenden Nullen geschrieben werden soll:

for (int i = 0; i<64; ++i) {
	System.out.printf("%06d%n", Integer.parseInt(Integer.toBinaryString(i)));
}

Bei längeren Zahlen musst du dir was basteln, was vor der eigentlichen Zahl die gewünschte Anzahl Nullen schreibt und dann nur die rechten x Stellen des Strings ausgibt:

for (int i = 0; i<64; ++i) {
	String binaryString = "0".repeat(6)+Integer.toBinaryString(i);
	System.out.println(binaryString.substring(binaryString.length()-6));
}
Von Experte JanMarcel01 bestätigt

Du kannst das über Binärzahlen machen. Im Vergleich: Wenn du die Kombination aller zweistelligen Dezimalzahlen haben möchtest (mit führenden Nullen), zählst du von 00 bis 99 und hast genau 100 Zahlen.

Alle Kombinationen von Binär 000000 bis 111111 erhältst du durch Umrechnung der Dezimal- in Binärzahlen von 0 bis 2^6-1=63

Für die Umwandlung baust du dir eine kleine Hilfe, wie @KarlRanseierlll in Kommentaren geschrieben hat: Jede Stelle der Binärzahl prüfen und entscheiden ob 0 oder 1 ausgegeben werden soll:

for(int j=5;j>=0;j--) {
System.out.print((zahl&(1<<j))?'1':'0');
}
System.out.println();

gibt viele wege ich nehme mal einen der einfach ist und didaktisch verständlich.

beispiel in javascript:

https://jsfiddle.net/u47ydav5/

var bit= 1;
for (b1=0;b1<=bit;b1++) {
 for (b2=0;b2<=bit;b2++) {
   for (b3=0;b3<=bit;b3++) {
     for (b4=0;b4<=bit;b4++) {
       for (b5=0;b5<=bit;b5++) {
         for (b6=0;b6<=bit;b6++) {
            document.getElementById("rechnung").innerHTML += ""+b1+b2+b3+b4+b5+b6+"<br>";
         }
       }
     }
   }
 }
}

kaikla343 
Fragesteller
 04.03.2022, 02:37

danke!

0

Indem Du einfach von 0 bis 2^6-1 hochzählst und den Wert als Binärstring mit Führungsnullen ausgibst.

kaikla343 
Fragesteller
 04.03.2022, 02:10

klar, aber wie mach ich das, dass die Kombinationen ausgegeben werden, eine forschleife bis 2^6-1 ist mir klar, ich mein eher dass bei einem durchlauf z. B. 100000 ausgegeben wird danach 010000 oder halt irgendetwas anders, halt alle Kombinationen am Ende

0
SmittyWJJ  04.03.2022, 02:14
@kaikla343

Wenn du das genau wie in deinem Beispiel haben willst, kannst du z.B. von 2^6-1 bis 0 runter zählen.

1
kaikla343 
Fragesteller
 04.03.2022, 02:17
@SmittyWJJ

okay, aber wie lasse ich den string entstehen? Also dass als erstest irgend ein 6er Bit ausgegeben wird, danach noch ein anderer etc?

0
SmittyWJJ  04.03.2022, 02:20
@kaikla343

So z.B.

int input = 10;
String result = Integer.toBinaryString(input);
System.out.println(result);                   // 1010
0
KarlRanseierIII  04.03.2022, 02:20
@kaikla343

Dann wirst Du Dir den String zusammenbauen müssen, indem Du über die 6 Stellen iterierst und jeweils schaust, ob das Bit gesetzt ist. Binary AND wäre hier eine Möglichkeit (oder nimmst Modulo).

Eine ganz andre Option wäre das ganze Rekursiv anzugehen, bei ner Tiefe von 6 ist das noch überschaubar. Damit ginge das dann it beliebigen Zeichenvorräten.

for(int i=5;i>0=;--i) (um>>i&1)?print("1"):print("0");

Das übeträgst Du zu Java und solltest fertig sein. Staat print, kannste auch an einen String anhängen, oder weiß der Geier.

Da Du bei toBinaryString nicht so recht formatieren kannst, ist das nur bedingt geeignet.

0
kaikla343 
Fragesteller
 04.03.2022, 02:21
@KarlRanseierIII

danke, aber würden so nicht auch gleiche Kombinationen zu stande kommen?

0
KarlRanseierIII  04.03.2022, 02:23
@kaikla343

Das ist nur, um einen Integralwert zu einem Binärstring zu konvertieren, das sollte eigentlich auch num sein, naja, es geht ums Konzept.

2
TechPech1984  04.03.2022, 02:33

da lern man ja gar nichts, das ist ja nur was anderes benutzen weil man es selber nicht kann lol . in python ein import und 1 befehl und man hat alle kombinationen in allen variationen drauf ... sehr spannen .

0