[Java] Dual-/Binärzahlen in Dezimalzahlen umwandeln

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von timo1291, 24. Februar 2008 .

Schlagworte:
  1. 24. Februar 2008
    Dual-/Binärzahlen in Dezimalzahlen umwandeln

    Hi,

    ich muss für die Schule mit Java einen Binär- Dezimalzahlen Umrechner programmieren. Dezimalzahlen in Dualzahlen hab ich schon hinbekommen, nur wie geht es von Dual in Dezimal? Ich hab absolut keine Idee.

    Code:
    public class Umrechnung
    {
    
    private int ergebnis; // Wird für die Umrechnung benötigt
    private int teiler; // Eigentlich überflüssig
    private int rest; // Rest kann 1 oder 0 sein, wird je nachdem in einem Array gespeichert
    private int z; // z fuer Zaehler
    private int x; // Dient lediglich zur Speicherung von "zahl" 
    int [] peter = new int[100]; // Array, in dem die Dualzahlen bei der Umrechnung gespeichert werden
    
    
     public Umrechnung(int zahl)
     {
     x = zahl;
     ergebnis = zahl;
     teiler = 2;
     z = 0;
     }
     
     
     public void zahlAendern(int neueZahl)
     {
     z = 0;
     x = neueZahl;
     ergebnis = neueZahl;
     }
     
     
     public void umrechnen()
     { 
     int y = 1;
     while(ergebnis > 0)
     {
     System.out.println(+ergebnis+ " : " +teiler+ " = " +(ergebnis/teiler)+ " Rest = " +(ergebnis % teiler)+ " * " +(y)); 
     rest = ergebnis % teiler; 
     peter[z] = rest;
     ergebnis /= teiler;
     z += 1;
     y *= 2;
     }
     System.out.println();
     System.out.println("Dezimalzahl, die umgewandelt wurde: " +x);
     System.out.println("Folgende Zahlenfolge ist die umgewandelte Dualzahl:");
     System.out.println();
     dualzahlAusgeben();
     }
     
     
     public void dualzahlAusgeben()
     { 
     while(z>0)
     {
     System.out.print(peter[z-1]);
     z -= 1;
     }
     }
    }
    
     
  2. 24. Februar 2008
    AW: Dual-/Binärzahlen in Dezimalzahlen umwandeln

    Hey,
    habe es vor paar Wochen schonmal in Visual Basic programmiert, vielleicht hilft es dir ja:

    Es rechnet Dezimalzahlen ins Dualsystem und Dualzahlen ins Dezimalsystem - es werden Prozeduren und Felder benutzt um diese Aufgabe zu bewältigen. (geht aber auch ohne)
    PHP:
    Option Explicit On
    Option Strict On

    Public Class  DeziDual

        
    'Prozedure für Dezi > Dual
        Sub DeziDual(ByRef Dezimalzahl As Integer, ByRef Feld() As Integer)
            Dim i As Integer
            '
    For  Schleife  ( läuft 8x )
            For 
    0 To 7 Step 1
                Feld
    ( i ) =  Dezimalzahl Mod 2  'rechnet den Rest raus
                Dezimalzahl = Dezimalzahl \ 2 '
    dividiert immer weiter runter
            Next

        End Sub

        Sub DualDezi
    ( ByRef feld () As  Integer ByRef Dez  As  Integer )
            
    Dim i  As  Integer
            
    'For-Schleife läuft 8x
            Dez = 0
            For i = 0 To 7 Step 1
                Dez = Dez + CInt(feld(i) * 2 ^ i)
            Next
            txt_dezimal.Text = CStr(Dez)
        End Sub


        '
    Programm für Dezi  Dual
        
    Private  Sub Button2_Click ( ByVal sender  As  System . Object ByVal e  As  System . EventArgs Handles Button2 . Click

            
    'Variablendeklaration
            Dim eingabe As Integer = CInt(txt_dezimal.text)
            Dim dual(0 To 7) As Integer '
    Feld
            Dim i 
    As  Integer

            
    If  eingabe  >=  And  eingabe  <=  255 Then  'Check für die Eingabe

                DeziDual(eingabe, dual) '
    Funktions -/ Prozedurenaufruf

                
    'Vereinbarung der Reihenfolge
                txt_1.Text = CStr(dual(7))
                txt_2.Text = CStr(dual(6))
                txt_3.Text = CStr(dual(5))
                txt_4.Text = CStr(dual(4))
                txt_5.Text = CStr(dual(3))
                txt_6.Text = CStr(dual(2))
                txt_7.Text = CStr(dual(1))
                txt_8.Text = CStr(dual(0))

                For i = 7 To 0 Step -1  '
    2.  For- Schleife  ( eig nicht nötig )
                    
    txt_binaer . Text  txt_binaer . Text  dual ( i )
                
    Next
            
    Else  'Check für die Eingabe
                MsgBox("Bitte nur Zahlen von 0-255 eingeben!")
            End If
        End Sub

        '
    Programm für Dual  Dezi
        
    Private  Sub Button1_Click ( ByVal sender  As  System . Object ByVal e  As  System . EventArgs Handles Button1 . Click

            txt_binaer
    . Text  txt_1 . Text  txt_2 . Text  txt_3 . Text  txt_4 . Text  txt_5 . Text  txt_6 . Text  txt_7 . Text  txt_8 . Text

            Dim dual
    ( 0 To 7 ) As  Integer
            Dim Dez 
    As  Integer


            dual
    ( 7 ) =  CInt ( txt_1 . Text )
            
    dual ( 6 ) =  CInt ( txt_2 . Text )
            
    dual ( 5 ) =  CInt ( txt_3 . Text )
            
    dual ( 4 ) =  CInt ( txt_4 . Text )
            
    dual ( 3 ) =  CInt ( txt_5 . Text )
            
    dual ( 2 ) =  CInt ( txt_6 . Text )
            
    dual ( 1 ) =  CInt ( txt_7 . Text )
            
    dual ( 0 ) =  CInt ( txt_8 . Text )

            
    DualDezi ( dual Dez )



        
    End Sub

        
    Private  Sub Button3_Click ( ByVal sender  As  System . Object ByVal e  As  System . EventArgs Handles Button3 . Click
            txt_1
    . Text  ""
            
    txt_2 . Text  ""
            
    txt_3 . Text  ""
            
    txt_4 . Text  ""
            
    txt_5 . Text  ""
            
    txt_6 . Text  ""
            
    txt_7 . Text  ""
            
    txt_8 . Text  ""
            
    txt_dezimal . Text  ""
            
    txt_binaer . Text  ""
        
    End Sub

    End 
    Class
    Die Rechnung geht folgendermaßen: Dez = Dez + feld(i) * 2 ^ i
    Ich hoffe ich konnte Dir ein bisschen weiterhelfen.


    MfG,
    SaschaB
     
  3. 24. Februar 2008
    AW: Dual-/Binärzahlen in Dezimalzahlen umwandeln

    Also eine möglichkeit wäre:

    Du nimmst die Dualzahl und rechnest die letzte Stelle*2^0
    die davor*2^1
    die davor*2^2
    die davor*2^3

    usw.

    mfg
     
  4. 24. Februar 2008
    AW: Dual-/Binärzahlen in Dezimalzahlen umwandeln

    Ich danke euch beiden, hab es jetzt eigentlich noch ganz einfach hinbekommen
     
  5. 25. Februar 2008
    AW: Dual-/Binärzahlen in Dezimalzahlen umwandeln

    Weis net obs noch nützlich ist, aber in Java kannst des auch ganz einfach mit einer Methode machen: Integer.parseInt(zahl, basis)

    Also z.B.
    Code:
    String eingabe = "011010";
    int dec = Integer.parseInt(eingabe, 2); //2 -> Binär
    Wobei dann die komplette Logik vom Umwandeln flöten geht, schätze so war die Übung dann nicht gedacht
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.