importPour l'utiliser : import Data.Bits
Data.Bits — opérations bit-à-bit GÉNÉRALES (interface Bits / FiniteBits)
Synopsis
interface Bits a where
(.&.) : a -> a -> a -- infixl 7
(.|.) : a -> a -> a -- infixl 5
xor : a -> a -> a
complement : a -> a
shiftL : a -> Int -> a
shiftR : a -> Int -> a
Bit-à-bit. shiftR est ARITHMÉTIQUE pour les types signés (extension de signe), LOGIQUE (remplissage zéro) pour les non signés — porté par la signedness du TYPE. Le compte de shiftL/shiftR est un Int ; k ≤ 0 laisse la valeur inchangée ; pour une largeur w, k ≥ w donne 0 (shiftL, shiftR logique) ou le bit de signe répliqué (shiftR arithmétique).
interface Bits a => FiniteBits a where
finiteBitSize : a -> Int
popCount : a -> Int
countLeadingZeros : a -> Int
countTrailingZeros : a -> Int
rotateL : a -> Int -> a
rotateR : a -> Int -> a
Types à NOMBRE DE BITS fini : largeur + comptages de bits. (Int est exclu : complément-à-2 infini, pas de largeur définie.)
oneBit : Bits a => FromNat a => Int -> a
oneBit i : la valeur dont SEUL le bit i est à 1 (le bit de Data.Bits).
testBit : Bits a => FromNat a => Eq a => a -> Int -> Bool
testBit x i : le bit i de x est-il à 1 ?
setBit : Bits a => FromNat a => a -> Int -> a
setBit x i : x avec le bit i forcé à 1.
clearBit : Bits a => FromNat a => a -> Int -> a
clearBit x i : x avec le bit i forcé à 0.
complementBit : Bits a => FromNat a => a -> Int -> a
complementBit x i : x avec le bit i inversé.