AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hex -> Integer

Ein Thema von Pseudemys Nelsoni · begonnen am 15. Dez 2004 · letzter Beitrag vom 15. Dez 2004
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Re: Hex -> Integer

  Alt 15. Dez 2004, 03:49
Machen wir es mal im Binärsystem:
Code:
4 : 2 = 2 (d)
100 : 010 = 010 (b)

8 : 2 = 4 (d)
1000 : 0010 = 0100 (b)
Was fällt auf? Teilt man im Binärsystem durch 2, entspricht dies eine Bit-Verschiebung um eine Stelle nach rechts. Aus 100 wird 010. Umgekehrt kann man daraus folgern, dass eine Bit-Verschiebung um eins nach links einer Multiplikation mit 2 (2^1) entspricht. Eine Bit-Verschiebung um 2 entspricht dann einer Multiplikation mit 4 (2^2). Eine Bit-Verschiebung um 3 entspricht einer Multiplikation mit 8. Die Bit-Verschiebung um 8 entspricht also einer Multiplikation mit 256 (2^8).

Beispiel:
4 shl 8 = 1024
4 * 2^8 = 4 * 256 = 1024

dizzy hat also nichts anderes gemacht als einen Wert mit 2^8 zu multiplizieren. Bzw. wenn man sich den ganzen Ausdruck anguckt:
Word(arr[0] or arr[1] shl 8) hat er einen Wert mit 2^8 multipliziert und ihn mit einen anderen mit einem logischem oder verknüpft.
Code:
010 or (010 shl 1)
010 or 100

   010
or 100
------
   110
entspricht:
Code:
2 + 2 * 2^1 
2 + 4 = 6

Diese Schiebebefehle sind wesentlich schneller für die CPU durchzuführen als herkömmliche Multiplikationen. Auf dem 386er waren sie bis zu 40x schneller. Wenn man also mit einer Potenz von 2 Multiplizieren will, dann ist es sehr performant mit den Schiebebefehlen zu arbeiten.

Ein bißchen was zum Rumprobieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lo, // left operand
  so, // shift operand
  res: Integer; // Result
begin
  lo := $4;
  so := 8;
  res := $4 shl 8;
  ShowMessage(Format('$%X shl %d = $%X (%dd)',[lo, so, res, res]));
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:43 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