| Portability | portable |
|---|---|
| Stability | experimental |
| Maintainer | libraries@haskell.org |
Data.Bits
Description
Synopsis
- class Num a => Bits a where
- (.&.) :: a -> a -> a
- (.|.) :: a -> a -> a
- xor :: a -> a -> a
- complement :: a -> a
- shift :: a -> Int -> a
- rotate :: a -> Int -> a
- bit :: Int -> a
- setBit :: a -> Int -> a
- clearBit :: a -> Int -> a
- complementBit :: a -> Int -> a
- testBit :: a -> Int -> Bool
- bitSize :: a -> Int
- isSigned :: a -> Bool
- shiftL :: a -> Int -> a
- shiftR :: a -> Int -> a
- rotateL :: a -> Int -> a
- rotateR :: a -> Int -> a
Documentation
class Num a => Bits a whereSource
The Bits class defines bitwise operations over integral types.
- Bits are numbered from 0 with bit 0 being the least significant bit.
Minimal complete definition: .&. , .|. , xor , complement ,
(shift or (shiftL and shiftR )), (rotate or (rotateL and rotateR )),
bitSize and isSigned .
Methods
Bitwise "and"
Bitwise "or"
Bitwise "xor"
complement :: a -> aSource
Reverse all the bits in the argument
shifts shift x ix left by i bits if i is positive,
or right by -i bits otherwise.
Right shifts perform sign extension on signed number types;
i.e. they fill the top bits with 1 if the x is negative
and with 0 otherwise.
An instance can define either this unified shift or shiftL and
shiftR , depending on which is more convenient for the type in
question.
rotates rotate x ix left by i bits if i is positive,
or right by -i bits otherwise.
For unbounded types like Integer , rotate is equivalent to shift .
An instance can define either this unified rotate or rotateL and
rotateR , depending on which is more convenient for the type in
question.
bit i is a value with the ith bit set and all other bits clear
x `setBit` i is the same as x .|. bit i
clearBit :: a -> Int -> aSource
x `clearBit` i is the same as x .&. complement (bit i)
complementBit :: a -> Int -> aSource
x `complementBit` i is the same as x `xor` bit i
testBit :: a -> Int -> Bool Source
Return True if the nth bit of the argument is 1
Return the number of bits in the type of the argument. The actual
value of the argument is ignored. The function bitSize is
undefined for types that do not have a fixed bitsize, like Integer .
Return True if the argument is a signed type. The actual
value of the argument is ignored
Shift the argument left by the specified number of bits (which must be non-negative).
An instance can define either this and shiftR or the unified
shift , depending on which is more convenient for the type in
question.
Shift the first argument right by the specified number of bits
(which must be non-negative).
Right shifts perform sign extension on signed number types;
i.e. they fill the top bits with 1 if the x is negative
and with 0 otherwise.
An instance can define either this and shiftL or the unified
shift , depending on which is more convenient for the type in
question.