Einzelnen Beitrag anzeigen

Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Dezimal nach Dual umwandeln

  Alt 2. Aug 2006, 02:27
Zunächst möchte ich mal meine Variante euch nicht vorenthalten, ist eine Vereinfachung des ersten Codes:
Delphi-Quellcode:
function DecToBin(Value: Cardinal): String;
begin
  repeat
    Result := IntToStr(Value mod 2) + Result;
    Value := Value div 2;
  until Value = 0;
end;
Zum zweiten Code:
Es liegt einfach daran, dass die Schleife von 7 auf 0 runterläuft und somit nur die rechten 8 Bits behandelt werden.
Man müsste also vorher die Anzahl der benötigten Bits berechnen (bei Cardinal maximal 32 ) und dann die Schleife z.B. von 31 auf 0 runter laufen lassen. Das funktioniert, getestet!
Die führenden Nullen dann zum Schluss noch zu entfernen sollte wohl nicht das Problem sein.

//Edit:
Die Anzahl der benötigten Bits zu berechnen ist ja eigentlich ganz einfach, so spart man sich auch das Entfernen der überflüssigen Nullen.
Die FOR-Schleife müsste also wie folgt abgeändert werden:
for i := Floor(Log2(Value)) downto 0 do
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat