Einzelnen Beitrag anzeigen

Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Umrechnen von Zahlensystem

  Alt 7. Nov 2009, 19:08
Zumindest das hier kann ich dir erklären:

Zitat von Ghose:
///Binär in Dezimal///
c := c+ Strtoint(s[b]) * power(2 , (-1 + b) ); (Ich habs in Internet gefunden aber versteh es kein bisschen!)
Überlege dir mal, wie eine Binärzahl aufgebaut ist. Sie besteht nur aus Einsen und Nullen, also z.B.

Code:
10010
Dabei ist die erste Ziffer die signifikanteste, die Binärzahl wird also "von hinten" gelesen (die hinterste Ziffer hat den kleinsten Wert, die vorderste den größten, siehe "Big Endian")

Aus der Binär-Zahl ergibt sich daher:

Code:
0 * 2^0 = 0
1 * 2^1 = 2
0 * 2^2 = 0
0 * 2^3 = 0
1 * 2^4 = 16
-------------
= 18
Vor deiner Schleife drehst du den Binär-String um, also wird aus 10010 nun 01001. Dann gehst du Zeichen für Zeichen deiner Binär-Zahl von links nach rechts durch, also von der Ziffer mit der niedrigsten Wertigkeit zu der höchsten (da umgedreht). Strtoint(s[b]) liefert dir dabei die jeweilige Ziffer aus der Binär-Zahl, also entweder 0 oder 1. Diese Ziffer wird mit power(2,(b-1)) multipliziert, also mit der Wertigkeit der jeweiligen Ziffer. Für das erste Zeichen (bei uns 0) ergibt sich also 0*2^0 = 0. Dieser Wert wird zu c hinzuaddiert. Das zweite Zeichen (also bei b=2) ist 1, also ergibt sich ein Wert von 1*2^1 = 2, welcher wieder zu c addiert wird. Dies machst du für jedes Zeichen deines Binär-Strings, am Ende erhälst du die gesuchte Dezimal-Zahl c.

Patti

EDIT:

Zu deiner 3. Frage: Wenn du die Eingabe auf bestimmte Zeichen beschränken willst, kannst du beispielsweise im OnKeyPress der Edit-Komponente darauf reagieren:

if not(Key in['0'..'9', 'A'..'F']) then Key := #0; // Bei HEX Wenn der Benutzer versucht, ein Zeichen einzugeben, das nicht erlaubt ist, erscheint es nicht im Edit
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat