SetBit,incl,... bei 64Bit Typen

Mario
Benutzer
Avatar
Gender: n/a
Age: 50
Posts: 15
Registered: 06 / 2012
Subject:

SetBit,incl,... bei 64Bit Typen

 · 
Posted: 02.10.2012 - 13:00  ·  #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
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

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

 · 
Posted: 03.10.2012 - 17:25  ·  #2
Hallo Marion,

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

rolf
Avra
Schreiberling
Avatar
Gender:
Location: Belgrade, Serbia
Age: 53
Homepage: rs.linkedin.com/in…
Posts: 653
Registered: 07 / 2002
Subject:

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

 · 
Posted: 07.10.2012 - 16:58  ·  #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.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   62   76 · Page-Gen-Time: 0.034816s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI