![]() |
Zahl-Umrechnungen Bin, Oct, Dec, Hex
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich hab den Rechner bereits im Object-Pascal / Delphi-Language-Forum veröffentlicht und mit eurer Hilfe einige Dinge verbessert. Das Programm kann Binär, Oktal, Dezimal und HexaDezimal hin und her rechnen wie man mag. Ich habs mit einigen Kommentaren versehen und die einzelnen Schritte, die dafür gemacht werden genau beschrieben. Viel Spaß damit Elmar |
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
Ist eher ein OpenSource-Programm, als ein Beitrag für die Code-Library. |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
Könntest du bitte auch direkt die exe mitliefern, weil ich z.B das Projekt mit Delphi 3 nicht öffnen kann :wink:
|
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
Liste der Anhänge anzeigen (Anzahl: 1)
Guck dir das mal an :coder:
Vieleich nützt es dir was is auch en ZahlenWandler von Dezimal auf alles |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
WAAAHHH so einfach?? und dafür mach ich mir so nen stress? :?
aber danke dir für den quelltext, wirklich gut :) Grüße |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
hmm, beide rechener haben probleme bei negativen zahlen :(
ansonsten sind die progs durchaus nutzbar :) |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
Zitat:
![]() (Weiter oben wird auch nochmal die Umwandlung in belibige Zahlensysteme erklärt) In der Funktion x2y wandele ich erst die Quellbais nach dec (Basis 10) und danach in die Zielbasis. Meine dec2alles macht fast das selbe wie Deine. Du macht ein
Delphi-Quellcode:
ich mache ein
Result := Zifferberechnung + Result;
Delphi-Quellcode:
Deine Methode ist etwas effizienter, da Du nicht erst die 1. Ziffer bestimmen musst und auch auf das Potenzieren verzichten kannst. ;-)
Result := Result + Zifferberechnung
Aber viele Wegen führen nach Rom ;-)
Delphi-Quellcode:
// Umrechnen dec nach BaseY
Result := ''; // erste Ziffer bestimmen i := 0; while Base10Zahl >= IntPower(BaseY, i) do begin inc(i); end; // die eigentliche Umwandlung while i>0 do begin Result := Result + Ziffern[Base10Zahl div Round(IntPower(BaseY, i-1))+1]; Base10zahl := Base10Zahl mod Round(IntPower(BaseY, i-1)); dec(i); end; |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
Zitat:
Code:
-5 (dec) = -1001 (bin)
Delphi-Quellcode:
if abs(QuellBasis) <> QuellBasis then begin Neg := True; QuellBasis := QuellBasis * -1; end;
ZielBasis := Umwandeln(QuellBais); if Neg then ZielBasis := ZielBais * -1; |
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
bei binär is das nich so einfach. da muss dann das MSB (most significant bit) den wert 1 haben und die anderen entsprechend geändert weredn!
|
Re: Zahl-Umrechnungen Bin, Oct, Dec, Hex
Zitat:
Auch bei Binär kann man (in der Mathematik) mit dem "-" Zeichen arbeiten. In der EDV werden die Binärzahlen aber in dem von Dir angegebenen Format abgelegt. Das hat aber nichts damit zu tun, das im Binärsystem kein Minus möglich ist, sondern es relativ einfach nach Deiner Methode zu handeln ist. Im Dualsystem kann eine Subtraktion als eine Addition mit dem 2er Kompliment dargestellt werden. Eine Negative Zahl wird deswegen in der EDV gerne als Zweierkompliment dargestellt. Das funktioniert sehr gut, da man in der Regel genau weiß wie viel Bits eine Zahl groß werden darf. Was machst Du wenn Du nicht weißt, wie viele Bits Dein Wert hat? Sprich wir arbeiten mit Binärzahlen, die sagen wir mal bis zum Bereich 2^10.000.000 groß werden können. Wenn Du nun den Wert -1 ablegen willst, kann man natürlich auch 10 Mio. Einsen davor schreiben :mrgreen: Ich hatte irgendwann mal eine Funktionssammlung in TP6 die mit sehr großen Binärzahlen rechnen kann. dort wurde sich nur das Vorzeichen gemerkt. Beim Rechnen wurde dann das 2er Komplimentgebildet (Max(AnzBits(Zahl1), AnzBits(Zahl2))+1 und danach bei einer negativen Zahl wieder zurückgewandelt. Das klappte sehr gut. Anmerkung: Kompliment ist das Negativ der Zahl: z.B. 00001001 -> 11110110 2er Kompliment ist das Kompliment der Zahl + 1 z.B. -> 00001001 -> 11110111 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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