Binärzahlen

Ö

öma

Gast
Hallo,
hier kann mir bestimmt jemand weiterhelfen. ;)
Ich muss sämtlich Binärzahlen mit gegebener Länge bestimmen. D.h. bei einer Länge von 3 Bits wäre eine (0)_10 = (000) oder eine (3)_10 eine (011). Kann mir da zufällig jemand helfen. Mir fehlen da im Moment die Ideen.


Vielen Dank :)
 

Fab1

Top Contributor
hab das zwar noch nie gemacht, hört sich aber nicht so schwer an.

Zu Beginn würde ich die Dualzahl in ein Char-Array umwandeln mit der Methode toCharArray();

Jetzt musst du nur noch von hinten nach vorne also absteigend überprüfen, ob die Zahl 0 oder 1 ist.
Natürlich brauchst du eine Variable, die sich immer wieder verdoppelt egal, ob die Zahl 0 oder 1 ist.

Ist die Zahl 1, dann musst du die Variable deiner Summe addieren und wenn nicht, dann einfach die nächste Zahl prüfen.

Hoffe, ich habe die Frage überhaupt richtig verstanden, bin mir nämlich nicht ganz sicher.
 

Fab1

Top Contributor
Zeitlich ist es bei mir momentan sehr schlecht. Schau einfach mal ein bisschen in Google rum, du bist sicherlich nicht der erste mit diesem Problem. Eventuell gibt es dort auch eine bessere Lösung, wie die die ich mir vorgestellt habe.
 
G

Gast2

Gast
Wo genau liegt denn das Problem? Wenn du alle Binärzahlen mit Länge 3 bestimmen willst dann hat dein String immer die Länge 3 und jede Stelle ist entweder 0 oder 1. Keine Idee wie du das umsetzen sollst?

Alternatividee:
Die größtmögliche Zahl bestimmen die man mit x bits darstellen kann. Schleife über zahlen 0 bis x und die Zahl in einen Binärstring wandeln.
 

Fab1

Top Contributor
hab jetzt doch mal was gebastelt, hoffe du wolltest es so haben. Und das obwohl hier normalerweise keine "Hausaufgaben" gemacht werden. :)

die aufrufende Klasse
Java:
public class Test {

	public static void main(String[] args) {

		Test2 t = new Test2();
		t.los("001111"); // 15
		t.los("10000");  // 16
		t.los("111111"); // 63
	}
}

die aufgerufene Klasse
Java:
import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.*;
 
 
public class Test2 {
	
	public void los(String s){
		
		char[] ch = s.toCharArray();
		int verdoppler = 1;
		int summe = 0;
		
		for(int i = s.length()-1; 0 <=i; i-- ){
			
			if(ch[i] == '0'){
				// mach garnix
			}
			if(ch[i] == '1'){
				// addiere die Summe
				summe += verdoppler;
			}
			verdoppler *=2;
		}
		
		System.out.println(summe);
	}
}
 

Andi_CH

Top Contributor
Man könnte auch drei
Code:
for (int i=0; i<=1; i++) {
Schleifen verschachteln und die drei Werte sysouten ;-)
 
Ö

öma

Gast
Wo genau liegt denn das Problem? Wenn du alle Binärzahlen mit Länge 3 bestimmen willst dann hat dein String immer die Länge 3 und jede Stelle ist entweder 0 oder 1.

Nein! Ich will alle Binärzahlen von 0 bis n mit der Länge x haben. Z.b von 0 bis 15 mit der Länge 3, d.h. 000, 001, 010, 011, 100 usw..
 

Andi_CH

Top Contributor
Ich glaub zwar, dass du es auch so schaffen würdest, aber ich beende den Thread mal
(Warum rieche ich Troll?)

Java:
	public void printBinaerZahlen() {
		for (int i = 0; i<=1; i++) {
			for (int j = 0; j<=1; j++) {
				for (int k = 0; k<=1; k++) {
					System.out.println("" + i + j + k);
				}
			}
		}
	}
 

Cybergoth

Mitglied
Ich denke das hier ist gefragt:

Java:
public void printBinaerZahlen(int length n) 
{
    for (int i=0; i<Math.pow(2, n); i++)
        System.out.println(Integer.toBinaryString(i));
}

Ggf. müssen noch die führenden Nullen addiert werden.
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Ich denke das hier ist gefragt:

Java:
public void printBinaerZahlen(int length n) 
{
    for (int i=0; i<Math.pow(2, n); i++)
        System.out.println(Integer.toBinaryString(i));
}

Ggf. müssen noch die führenden Nullen addiert werden.

Es gibt sicher Formatierungsmöglichkeiten die führende Nullen ausgeben.

Logisch sind meine Loops nicht so flexibel aber sie geben alle Binärzahlen mit 3 Bits aus und wenn sich einer so "unbeholfen" anstellt wie der TO - na ja, da gehe ich nicht weiter.
 

Ähnliche Java Themen

Neue Themen


Oben