Dezimal in Binär problem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Dezimal in Binär problem

    Hallo.
    Ich möchte eine Dezimalzahl in Binär umrechnen

    z.B. 1 = 00000001

    Ich weiß es würde so gehen:

    VB.NET-Quellcode

    1. Dim out As String = Convert.ToString(dezimal, 2)


    Aber dann kommt nicht 00000001 raus sondern 1

    Deswegen mache ich das so:


    VB.NET-Quellcode

    1. Dim i As Long
    2. Dim x As Long
    3. Dim bin As String
    4. Const maxpower = 6
    5. bin = ""
    6. x = dezimal
    7. 'If x < 0 Then bin = bin + "1" Else bin = bin + "0"
    8. For i = maxpower To 0 Step -1
    9. If CBool(x And CLng((2 ^ i))) Then
    10. bin = bin + "1"
    11. Else
    12. bin = bin + "0"
    13. End If
    14. Next
    15. Textbox1.text = bin


    Das klappt auch. Da kommt dann 00000001 raus.
    Aber wenn ich z.B. die Zahl 183 ausrechen möchte kommt da nicht 10110111 sondern 0110111 raus..
    Gibt es eine bessere Methode?


    //Edit sry ich habe das Prolem gefunden..ich habe mich verzählt. Bitte löschen wenns geht ^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „TIecIh“ ()

    Ich verstehe nicht ganz, wo das Problem ist.
    Die Repräsentationen 1 und 00001 und 000000000000000000000001 haben alle den selben Wert. Es sind die gleichen Zahlen.
    Wenn Du eine Repräsentation mit einer festen Anzahl an Ziffern möchtest, verwende das:

    VB.NET-Quellcode

    1. Convert.ToString(DieZahlDieNichtDezimalSeinMuss, 2).PadLeft(AnzahlAnZiffern, "0"c)

    Das fügt links so oft eine Null hinzu, bis der String AnzahlAnZiffern lang ist.

    Nochwas:
    Die Variable dezimal im ersten Codeschnipsel ist irreführend benannt. Ein Integer ist weder binär, noch dezimal, noch sonst was. Ein Integer hat einen Wert. Dezimal ist nur eine Repräsentation für Werte. Genauso wie binär.

    VB.NET-Quellcode

    1. Dim a As Integer = 10 '"10" wird vom Compiler als dezimale Repräsentation interpretiert. Er generiert einen Wert, der dieser Repräsentation entspricht.
    2. Dim b As Integer = &HA '"&HA" bzw. "A" wird vom Compiler als hexadezimale Repräsentation interpretiert. Er generiert einen Wert, der dieser Repräsentation entspricht.
    3. 'a und b haben den gleichen Wert. Die Repräsentation ist egal.

    Lies dazu auch das durch:
    String to Hex
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils