FR
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é.