![]() |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
-> :lol: <-
ach ja nur zum schluss, falls noch mal jemand was zu TPascal fragt, das ergebniss von Funktionen kann da nicht mit Result angesprochen werden, sondern nur über den Funktionsnamen selbst. |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Zitat:
Stimmt. Ich habe mein erstes Programm in TP 5.5 verkauft. (Damals für 5000 DM) leider habe ich einiges vergessen. Aber Du hast recht. [edit=Luckie]Quote-Tags gefixt. Mfg, Luckie[/edit] |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
*alten Thread wieder hochkram*
Gibt es auch eine mathematische Formel (also kein Pascal-Code!) für die Umrechnung von Dezimal nach Binär? Ich meine nicht die wo man immer durch zwei teilt und den Rest hinschreibt, sondern eine ganz allgemeine, die man auf eine Zeile schrieben kann. Gibt's sowas? |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Nein, da ja die Zahl so lange bis sie Null ist Ziffer für Ziffer zur Zielbasis umgewandelt werden muß. Somit benötigt man immer eine Schleife. Natürlich gibt es eine Mathematische Formel, nur auch diese umschreibt einen iterativen Algorithmus.
Hier noch eine Lösung ohne Divisionen oder Shiftoperatoren:
Delphi-Quellcode:
Gruß hagen
function IntToBIN(const Value: Cardinal): String;
const sDigits: array[Boolean] of Char = ('0', '1'); var I: Integer; Mask: Cardinal; begin SetLength(Result, 32); Mask := 1; for I := 32 downto 1 do begin Result[I] := sDigits[Value and Mask <> 0]; Inc(Mask, Mask); end; end; |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Zitat:
|
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Hi Lucky,
ich hab mal ne Frage zu einem Post von dir, der schon einige Zeit her ist. function IntToBin(Int: Integer): String; var i : Integer; begin Result := ''; for i := 7 downto 0 do Result := Result + IntToStr((Int shr i) and 1); end; Es geht um die vorletzte Zeile.Es geht um den Befehl and 1. Soweit meine ich alles verstanden zu haben, nur dieser Befehl gibt mir noch zu denken. Die Funktion soll ja eine eigegebene Zahl vom Typ Integer in eine Binärzahl umwandeln. Die Funktion shr bewirkt, dass die umgewandelte Zahl um i Stellen nach rechts verschoben wird. Mir ist nur noch nicht klar, was das "and 1" zu bedeuten hat. Wäre nett wenn du mir helfen könntest. Mfg Kristoffer |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
and macht eine Und-Bitverknüpfung, d.h. wenn 2 Zahlen an der gleichen Bitadresse eine 1 stehen haben, so wird im Ergebnis für diese Bitstelle eine 1 ausgegeben. Ist nur einer der beiden Bitadressen null (oder beide), so wird 0 ausgegeben.
bsp: 5 = 0101 12 = 1100 5 and 12 = 0101 and 1100 = 0100 = 4 5 and 12 = 4 |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Herzlich willkommen in der Delphi-PRAXiS, Kristoffer.
Durch "i AND 1" werden effektiv alle bis auf das niederwertigste Bit von i ausgeschaltet. Genauso schaltest du mit "i OR 1" das niederwertigste Bit ein, falls es nicht schon eingeschaltet ist. Freundliche Grüße |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Ja die Frage ist nur warum brauche ich das in diesem Beispiel?
Trotzdem schonmal danke für die Antwort. |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Weil du die Bits in i einzeln betrachten möchtest. Du schiebst sie bitweise mit "shr 1" nach "rechts" und schaltest dann alle außer dem am weitesten "rechts" stehenden Bits aus, so dass du im Einzelfall nur noch 0 oder 1 erhältst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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 by Thomas Breitkreuz