Binärcode in Dezimalcode

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Binärcode in Dezimalcode

Beitrag 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:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
GroeGeFAZ
Beiträge: 4
Registriert: 14.07.2005 15:32

Beitrag 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
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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:
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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...?
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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)
Benutzeravatar
unix
Beiträge: 361
Registriert: 15.02.2005 19:25
Wohnort: Zwischen Coburg und Bamberg :-)
Kontaktdaten:

Beitrag 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
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
Antworten