AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Umrechnen von Zahlensystem

Ein Thema von Ghose · begonnen am 7. Nov 2009 · letzter Beitrag vom 8. Jan 2010
 
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, 18: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz