SetBit,incl,... bei 64Bit Typen

Mario
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 51
Beiträge: 15
Dabei seit: 06 / 2012
Betreff:

SetBit,incl,... bei 64Bit Typen

 · 
Gepostet: 02.10.2012 - 13:00 Uhr  ·  #1
Hallo,
ich habe mir in meinem aktuellen Projekt eine Variable vom typ word64 deklariert und wollte anschließend mit den Compilerfunktionen SetBit, incl, etc. auf einzelne Bits zugreifen. Allerdings bekomme ich immer die Fehlermeldung "not implemented".
Laut dem Forumsbeitrag "SetBit/GetBit extensions" im Wünsche-Verbesserungen Verzeichnis vom August 2007 sollt es doch implementiert sein, oder hab ich was überlesen?

Gruß Mario
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: SetBit,incl,... bei 64Bit Typen

 · 
Gepostet: 03.10.2012 - 17:25 Uhr  ·  #2
Hallo Marion,

sorry, noch nicht implementiert. Wird auch nicht so schnell kommen.
Es gibt leider höhere Prioritäten.

rolf
Avra
Schreiberling
Avatar
Geschlecht:
Herkunft: Belgrade, Serbia
Alter: 54
Homepage: rs.linkedin.com/in…
Beiträge: 653
Dabei seit: 07 / 2002
Betreff:

Re: SetBit,incl,... bei 64Bit Typen

 · 
Gepostet: 07.10.2012 - 16:58 Uhr  ·  #3
Mario, you can use an overlay trick to treat word64 as 2 longwords. You can get the idea if you take a look at TFix64Overlay type from Fixed Point library:

Code
  TFix64Overlay = record // this is handy for fast extraction of integer and fractional parts
                    fix        : fix64;
                    x  [@fix]  : fix64;
                    i64[@fix]  : int64;
                    w64[@fix]  : word64;
                    i  [@fix+4]: longint;
                    i32[@fix+4]: longint;
                    f  [@fix]  : longword;
                    f32[@fix]  : longword;
                    b  [@fix]  : array[0..7] of byte;
                    w  [@fix]  : array[0..3] of word;
                  end;


I guess you could use something like this:

Code
  TWord64Overlay = record
                     w64        : word64;
                     lw1[@w64]  : longword;
                     lw2[@w64+4]: longword;
                     lw[@w64]   : array[0..1] of longword;
                   end;


Then you can access individual bits as you want.
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   62   76 · Page-Gen-Time: 0.029116s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI