Konvertierung von dez zu bin mit Bool-Array

schnosi

Mitglied
Hey Leute,

ich brauche eure Hilfe bei einem kleinen Problem.
Und zwar sollen wir eine Konvertierung vornehmen von Dezimalzahlen zu Binärzahlen und für das ganze sollen wir ein Boolean-Array verwenden.
Vorgeben ist uns der Methodenkopf und dass die Zahl nicht mehr als 16 Bit breit sein soll (darf also nicht größer als 65535 sein).

Methodenkopf:
Java:
boolean[] dez2dual(int dezimalzahl)

Mein Ansatz ist das Ganze mit einer for-Schleife zu erledigen.
Ich weiß eben nur nicht so recht, wie ich JAVA sagen soll, dass 1=2^0 , 2=2^1 etc.
Und wie ich dann diese Binärzahl auch noch in ein Boolean-Array schreiben soll.
Könnt ihr mir bitte helfen?
Das wäre wirklich supi!

Liebe Grüße,
schnosi

P.S: Mir ist eben gerade noch etwas eingefallen. Geht das Ganze vielleicht mit Mudulo? also %
 

Landei

Top Contributor
Ungetestet:
Java:
boolean[] dez2dual(int dezimalzahl) {
   List<Boolean> list = new ArrayList<Boolean>();
   while(dezimalzahl > 0) {
      list.add(dezimalzahl % 2 == 1);
      dezimalzahl = dezimalzahl / 2;
   }
   boolean[] result = new boolean[list.size()];
   for(int i = 0; i < result.length; i++) {
       result[i] = list.get(i); 
   }
   return result;
}

Oder gleich Liste zurückgeben.
 

Landei

Top Contributor
Oder wenn einen führende Nullen (oder besser gesagt "führende falses") nicht stören:
(ungetestet)
Java:
boolean[] dez2dual(int dezimalzahl) {
   boolean[] result = new boolean[32];
   for(int i = 0; i < 32; i++) {
       result[i] = (1 << i) & dezimalzahl > 0; 
   }
   return result;
}
 

Lirave

Aktives Mitglied
für alle anderen die diesen thread finden und sich fragen wie man am besten eine Dezimalzahl in eine Dualzahl umwandeln kann siehe ff.code:

Java:
public class DezToDual {

	public static void main(String[] args) {
		System.out.println(Integer.toBinaryString(123));
		
	}
}

Ausgabe
 
Zuletzt bearbeitet:

schnosi

Mitglied
Also habe beide eben mal getestet und leider gibts bei beidem einen Fehler. Bei deinem ersten Beispiel, da sagt er mir, dass er List und ArrayList nicht finden kann und beim 2. , dass der Operator & für int und boolean unzulässig ist.
Mhhh... kannst du mir dein erstes Beispiel bitte mal etwas erklären. Ich will nicht so recht hintersteigen, was du mir damit sagen willst. Was ist mit List gemeint? und was macht List.add und List.get ?!
Und bei dem 2. würdest du da nicht auch alle anderen Zahlen bis 32 erzeugen und nicht nur 0 und 1? Vorallem was meinst du mit (1 << i) ?!
Sorry...möchte das einfach etwas besser nachvollziehen können.
 

Lirave

Aktives Mitglied
dies müsste auch klappen:

Java:
public class DezToBin {

	public static void main(String[] args) {
		int dez = 123;
		
		if (dez != 0){
			int var = (int)(Math.floor(Math.log(dez) / Math.log(2) +1));
			boolean[] array = new boolean[var];
			for(int i = 0; i<var ;i++){
				if ( (int)Math.pow(2, var-1-i) <= dez) {
					dez = dez-(int)Math.pow(2, var-1-i);
					array[i] = true;
				}else{
					array[i] = false;
				}
			}
		}else{
			boolean[] array = new boolean[1];
			array[0] = false;
		}
	}
}
 

Landei

Top Contributor
Also habe beide eben mal getestet und leider gibts bei beidem einen Fehler. Bei deinem ersten Beispiel, da sagt er mir, dass er List und ArrayList nicht finden kann und beim 2. , dass der Operator & für int und boolean unzulässig ist.
Mhhh... kannst du mir dein erstes Beispiel bitte mal etwas erklären. Ich will nicht so recht hintersteigen, was du mir damit sagen willst. Was ist mit List gemeint? und was macht List.add und List.get ?!
Und bei dem 2. würdest du da nicht auch alle anderen Zahlen bis 32 erzeugen und nicht nur 0 und 1? Vorallem was meinst du mit (1 << i) ?!
Sorry...möchte das einfach etwas besser nachvollziehen können.

Du musst beim ersten Beispiel die verwendeten Klassen noch importieren (das ist inzwischen so selbstverständlich für mich, dass ich vergesse, es extra zu erwähnen):

import java.util.List;
import java.util.ArrayList;

Beim zweiten Beispiel fehlt eine Klammer, denke ich:
result = ((1 << i) & dezimalzahl) > 0;

<< ist ein "Bitshift"-Operator. a << b verschiebt die Bits in a um b Stellen nach links, was der Rechnung a*2^b entspricht. Mit 1 << i erzeuge ich also nacheinander alle nötigen Zweierpotenzen und teste mit dem bitweisen Und (&), ob dieser Stelle auch in der Zahl ein Bit gesetzt ist. Übrigens liegt Gorac daneben: In Java haben ints 32 bit. Eine Übersicht gibt es hier.
 

schnosi

Mitglied
Ah okay. Dann habe ich das schon mal verstanden.
Mir ist allerdings die 1. Methode immernoch ein Rätsel. Sorry wir sind einfach bei Java noch nicht so weit fortgeschritten und deswegen wäre das wohl unangebracht, wenn ich die erste Methode nehme.
Trotzdem erstmal ganz herzlichen Dank.
Mich würde nun aber mal noch interessieren, ob man die 0 am Anfang irgendwie noch wegbekommen könnte? Ich denke, die würde schon etwas stören. Wenn's aber nicht anders ginge, dann würde ich die Methode trotzdem nehmen.

Alle anderen Vorschläge sind auch nicht so recht mit unserer Aufgabe vereinbar, glaube ich. Trotzdem auch euch herzlichen Dank.

Bitte um Antwort.
 

Landei

Top Contributor
Das Problem ist, dass man erst mal wissen muss, wie lang das Array sein soll. In der ersten Methode verwende ich eine Liste, weil die "wachsen" kann. In der zweiten Methode verwende ich ein Array mit der theoretischen Maximalgröße. Liraves Lösung berechnet die Länge mit Logarithmen. BitInteger.bitLength() wäre eine andere Variante, um die Länge des Arrays zu bestimmen.

Hier eine Variante ohne Liste, die vorher die benötigte Arraylänge ermittelt, und auch das Boolean-Array in der üblichen Lese-Richtung erzeugt (also so, dass die Reihenfolge bei java.util.Arrays.toString(array) wie bei der üblichen Schreibweise der Binärzahl ist).

Java:
   public boolean[] dez2dual(int dezimal) {
       int bitLength = 0;
       for(int i = 31; i >= 0; i--) {
           if((dezimal & (1 << i)) > 0) {
               bitLength = i;
               break;
           }
       }
       boolean[] result = new boolean[bitLength + 1];
       for(int i = 0; i <= bitLength; i++) {
           result[bitLength - i] = (dezimal & (1 << i)) > 0;
       }
       return result;
   }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
M Konvertierung String -> double Java Basics - Anfänger-Themen 8
B Date Konvertierung Java Basics - Anfänger-Themen 0
T Datentypen Calender/Gregorianisch/Julianisch/JDN Konvertierung Java Basics - Anfänger-Themen 4
W Konvertierung und Vergleich unterschiedlicher Zeitformate Java Basics - Anfänger-Themen 11
W Methoden Konvertierung von Sonderzeichen Java Basics - Anfänger-Themen 2
C Konvertierung per Hand ausrechnen Java Basics - Anfänger-Themen 8
S Konvertierung in Liste Java Basics - Anfänger-Themen 3
M Erste Schritte konvertierung von int zu char Java Basics - Anfänger-Themen 3
V Erste Schritte Konvertierung Java Basics - Anfänger-Themen 2
D Input/Output Stringbuffer Befehle bei Konvertierung in String Java Basics - Anfänger-Themen 19
T Problem mit Array Konvertierung Java Basics - Anfänger-Themen 13
D Konvertierung UnsignedInt zu long Java Basics - Anfänger-Themen 5
K Konvertierung von einem Text in eine Zahl in Excel(JXL) Java Basics - Anfänger-Themen 2
A Konvertierung String-->hex-->long Java Basics - Anfänger-Themen 7
D Methode zur Konvertierung von Oberklasse in Unterklasse Java Basics - Anfänger-Themen 5
H Konvertierung String -> int Java Basics - Anfänger-Themen 11
D konvertierung/char/int Java Basics - Anfänger-Themen 14
K Datentypen Explizite Konvertierung Java Basics - Anfänger-Themen 12
R Konvertierung int nach char, Ausgabefehler Java Basics - Anfänger-Themen 3
E Typ Konvertierung Java Basics - Anfänger-Themen 4
R datentypen konvertierung u modulorechnung Java Basics - Anfänger-Themen 15
I Unstimmigkeit bei String-nach-Double-Konvertierung Java Basics - Anfänger-Themen 7
G Konvertierung von charArray in String funzt net Java Basics - Anfänger-Themen 3
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
I Konvertierung von double in int Java Basics - Anfänger-Themen 2
G Konvertierung Byte Array Java Basics - Anfänger-Themen 4
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8
G Probleme mit Konvertierung und Substraktion im Calendar Java Basics - Anfänger-Themen 4
J Erste Schritte Problem mit einer bool-Variable in einem Bot-Programm Java Basics - Anfänger-Themen 1
A Klassen Bool Actionlistener Java Basics - Anfänger-Themen 2
K Problem bei bool'scher Abfrage Java Basics - Anfänger-Themen 4
D Methode aufrufen funktioniert nicht ganz - Rückgabewert Bool Java Basics - Anfänger-Themen 12
L String -> Bool Java Basics - Anfänger-Themen 9
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben