Thema: Delphi Hilfe bei Schleife

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Hilfe bei Schleife

  Alt 15. Mär 2004, 15:55
Moin Kermit,


Inc(Dezimalzahl, StrToInt(dual[i]) * 1 shl (Length(dual) - i)) dual
ist ein String, der eine Dualzahl (Binärzahl) enthält, so wie in Deinem Editfeld.

i
ist ein Schleifenzähler, für eine Schleife, die alle Stellen des Strings dual durchgeht.

Dezimalzahl
muss vor der Schleife auf 0 initialisiert werden, und enthält am Ende den Wert, den die Dualzahl dargestellt hat.

StrToInt(dual[i])
ergibt, in Anghängigkeit es Wertes von dual[i] 0 oder 1, so dass auf der linken Seite von shl immer 0 oder 1 steht

length(dual) - i
sorgt dafür, dass die Anzahl der shl Vorgänge der Wertigkeit der jeweiligen Stelle entspricht.

Beispiel:

dual := '11001';

geht die Schleife jetzt von 1 bis 5, so ergibt sich beim ersten Durchlauf:

StrToInt(dual[i]) = 1. Das ganze *1 ist also 1

length(dual) - i = 5 - 1 = 4

also wird 1 viermal nach links geschoben. Jedes nach links schieben verdoppelt den Wert => 1 shl 4 = 16
Was dem Dezimalwert der höchsten Stelle der Dualzahl entpsricht.

Bei der nächsten Stelle wäre das Ergebnis dann also 8, dann zweimal hintereinander 0, und anschliessend 1, weil 1 shl 0 = 1

Ergibt
16
8
1
==
25

Was wiederum der Dezimalwert der Dualzahl 11001 ist. (1*2^4 + 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat