TIA Bool_to_Dword

Zuviel Werbung?
-> Hier kostenlos registrieren
@PN/DP - Harald: Würden diese beiden Routinen zum 1-Bit- bzw. 0-Bit-Zählen taugen?
Code:
// 1-Bits zählen : - - - - - - - - - -
    tdBitPat := idBitPat ; // idBitPat : das zu untersuchende BitMuster
    oiZähl1  := 0 ;
    WHILE tdBitPat <> 0 DO
        oiZähl1  := oiZähl1 + 1 ;
        tdBitPat := tdBitPat XOR (tdBitPat AND DINT_TO_DWORD(-(DWORD_TO_DINT(tdBitPat)))) ;
    END_WHILE ;  
   
// 0-Bits zählen : - - - - - - - - - -
    tdBitPat := NOT idBitPat ; // idBitPat : das zu untersuchende BitMuster
    oiZähl0  := 0 ;
    WHILE tdBitPat <> 0 DO
        oiZähl0  := oiZähl0 + 1 ;
        tdBitPat := tdBitPat XOR (tdBitPat AND DINT_TO_DWORD(-(DWORD_TO_DINT(tdBitPat)))) ;
    END_WHILE ;
Dazu müsste das Negieren von -2.147.483.648 wiederum -2.147.483.648 ergeben.

Zugabe:
Code:
// prüfen, ob 1 einziges 1-Bit : - - - - - - - - - -
    tdBitPat := idBitPat ; // idBitPat : das zu untersuchende BitMuster
    obOneBitOnly := (tdBitPat = (tdBitPat AND DINT_TO_DWORD(-(DWORD_TO_DINT(tdBitPat))))) AND (tdBitPat <> 0) ;
 
Zuletzt bearbeitet:
Zurück
Oben