Seite 1 von 1

Binärcode in Dezimalcode

Verfasst: 01.09.2005 19:52
von Tafkadasom2k5
Hiho allerseits!
Ich code gerade an einem Programm was Binärzählen in Dezimalzahlen umwandeln soll (ich weis das es diese En Mass gibt aber selber Proggen übt und man verstehts besser ;))
Also als erstes wollte ich anfangen den Binärwert "umzudrehen" damit man Schritt für Schritt damit arbeiten kann-naja-insgesamt ist dieser Code dabei rumgekommen....(der logischerweise ned funktioniert) :freak: :freak:

Code: Alles auswählen

Delay(1000)

AnfangsCode.s = "1010" 
Laenge = Len(AnfangsCode)
  
For i=0 To Len(AnfangsCode)
  Code.s = Code + Mid(AnfangsCode,Laenge,1)
  If Laenge <> 0
    Laenge = Laenge - 1
  EndIf
Next

For i=0 To Len(Code)
  
  If Mid(Code,i,1) = "1"
    Ergebnis = Ergebnis + Pow(2,i)
  EndIf
  
Next

Debug Ergebnis
Lasst euch mal zusätzlich den "Code" nach der umsetzung Debuggen.....der stimmt nicht und der Endweret stimmt vorne und hinten nicht (auch wenn ich mit dem vermurksten Binärcode rechne, kommt nicht das raus was rauskommen müsste-also n Fehler und danach muss noch irgendwo einer sitzen....)

Danke für eure Hilfe..bitte antwortet schnell-das ist eine Hausaufgabe-und bitte erklärt mir meine (warscheinluch sehr blöden) Fehler....wenn ich diese habe dann is die Hausaufgabe ja fertig... :allright:

Gr33tz
Tafkadasom2k5 :allright: :allright:

Verfasst: 01.09.2005 20:13
von GroeGeFAZ
das erste "for i" ab 1 laufen lassen und nicht von 0 und "Pow(2,i-1)" und nicht "Pow(2,i)".
hoffe ich hab sonst nicht übersehn.

Code: Alles auswählen

AnfangsCode.s = "1010" 
Laenge = Len(AnfangsCode) 
  
For i=1 To Len(AnfangsCode) 
  Code.s + Mid(AnfangsCode,Laenge,1) 
  If Laenge <> 0 
    Laenge = Laenge - 1 
  EndIf 
Next 

Debug code

For i=1 To Len(Code) 
  
  If Mid(Code,i,1) = "1" 
    Ergebnis = Ergebnis + Pow(2,i-1) 
  EndIf 
  
Next 

Debug Ergebnis

Verfasst: 01.09.2005 20:16
von Tafkadasom2k5
scheint zu funktionieren! Danke erstmal..aber warum denn

Code: Alles auswählen

Pow(2,i-1)
Und das mit der Schleife-hatte vergessen das die "mid" indexierung bei 1 beginnt und ned bei 0...stimmt ja....danke!

Gr33tz
DerMarc :allright:

Verfasst: 01.09.2005 20:21
von hardfalcon
Tafkadasom2k5 hat geschrieben:scheint zu funktionieren! Danke erstmal..aber warum denn

Code: Alles auswählen

Pow(2,i-1)
Frag nicht warum (das ist Mathematik, und Mathe kann man eben nicht erklären), sondern benutz den Code einfach.... :wink:

Verfasst: 01.09.2005 20:23
von Tafkadasom2k5
..ja aber in der ersten ausführung der Schleife steht dann da ja:

Code: Alles auswählen

pow(2,-1)
und das ergibt doch keinen sinn...?

Verfasst: 01.09.2005 20:46
von hardfalcon
Doch, natürlich ergibt das einen Sinn:

x ^ (-y) = 1/x^y

Nur ergibt es keinen Sinn für in deinem Programm (also ist wahrscheinlich irgendwo ein Bug im Code)

Verfasst: 02.09.2005 10:26
von unix
ich hab auch mal nen code geschrieben und funct

Code:

Code: Alles auswählen

Bit.l = 100000000  ; wegen runden
Zahl.l = 0

Bit + 00000000 ;Binärcode


Bit$ = Str(Bit)


For Bits = 1 To 8
 Ergebnis$ = Mid(Bit$, Bits+1, 1)
 If Ergebnis$ = "1"
  Zahl + Pow(2,(Bits*-1+8))
 EndIf
Next

Debug Zahl ;Zahl = ergebnis