Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Linke bzw. rechte Bits aus Variable vom Typen Word (https://www.delphipraxis.net/16841-linke-bzw-rechte-bits-aus-variable-vom-typen-word.html)

Ganymed 24. Feb 2004 13:46


Linke bzw. rechte Bits aus Variable vom Typen Word
 
Hi!

Ich habe eine Variable vom Typen Word (32bit unsigned int). Nun hätte ich gerne einmal den Wert der 20 linken und der 12 rechten Bits (am liebsten wieder als 32bit uint)...
Mit shl bzw shr komme ich da nicht weiter. Gibts vielleicht sonst irgendwelche Funktionen/Operatoren, die sowas erledigen?
Wenn ich mir eine Function dabür bauen wollte, müsste ich ja mit Zeigern *pfüi* arbeiten...
Wäre toll, wenn mir jemand unter die Arme greifen könnte.

Grüße

Ganymed

Christian Seehase 24. Feb 2004 19:41

Re: Linke bzw. rechte Bits aus Variable vom Typen Word
 
Moin Ganymed,

doch, mit schieben würdest Du weiterkommen, Du musst nur vorher die gewünschten Bits ausmaskieren.
Das sieht dann so aus:

Delphi-Quellcode:
const
  _dwMaskLeft20Bits = $FFFFF000; // Zum ausmaskieren der höherwertigen 20 Bits
  _dwMaskRight12Bits = $00000FFF; // Zum ausmaskieren der niederwertigen 12 Bits

var
  dwBase : DWORD;
  dw20   : DWORD;
  dw12   : DWORD;

begin
  dwBase := $ABCDEF98;
  dw12   := dwBase and _dwMaskRight12Bits;
  dw20   := (dwBase and _dwMaskLeft20Bits) shr 12; // Ausmaskierte Bits noch rechtsbündig, falls erforderlich
end;

// dw12 ist dann: $00000F98
// dw20 ist dann: $000ABCDE

Luckie 24. Feb 2004 19:52

Re: Linke bzw. rechte Bits aus Variable vom Typen Word
 
Was ist mit HiWord und LoWord?

Christian Seehase 24. Feb 2004 20:11

Re: Linke bzw. rechte Bits aus Variable vom Typen Word
 
Moin Luckie,

bei 20/12 Aufteilung wird das wohl nicht gehen ;-)

Luckie 24. Feb 2004 20:31

Re: Linke bzw. rechte Bits aus Variable vom Typen Word
 
:oops: Wer denkt denn schon an so eine krumme aufteilung. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz