Data.Bits
| Авторские права | (c) Университет Глазго 2001 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | переносимая |
| Безопасный Haskell | Безопасный |
| Язык | Haskell2010 |
Содержание
Описание
Этот модуль определяет битовые операции для целых чисел со знаком и без знака. Экземпляры класса Bits для типов Int и Integer доступны из этого модуля, а экземпляры для типов целых чисел с явно заданной разрядностью доступны из модулей Data.Int и Data.Word.
Классы типов
class Eq a => Bits a where Источник
Класс Bits определяет битовые операции над целочисленными типами.
- Биты нумеруются с 0, при этом бит 0 — это младший значащий бит.
Методы
(.&.) :: a -> a -> a infixl 7 Источник
Побитовое "и"
(.|.) :: a -> a -> a infixl 5 Источник
Побитовое "или"
xor :: a -> a -> a infixl 6 Источник
Побитовое "исключающее или"
complement :: a -> a Источник
Инвертирует все биты в аргументе
shift :: a -> Int -> a infixl 8 Источник
shift x i сдвигает x влево на i бит, если i положительно, или вправо на -i бит в противном случае. Правые сдвиги выполняют расширение знака для типов чисел со знаком; то есть, они заполняют старшие биты единицами, если x отрицательно, и нулями в противном случае.
Экземпляр может определить либо этот унифицированный shift или shiftL и shiftR, в зависимости от того, что более удобно для рассматриваемого типа.
rotate :: a -> Int -> a infixl 8 Источник
rotate x i циклически сдвигает x влево на i бит, если i положительно, или вправо на -i бит в противном случае.
Для неограниченных типов, таких как Integer, rotate эквивалентно shift.
Экземпляр может определить либо этот унифицированный rotate или rotateL и rotateR, в зависимости от того, что более удобно для рассматриваемого типа.
zeroBits — это значение, в котором все биты сброшены.
Следующие законы должны выполняться (для всех допустимых индексов битов n):
clearBit zeroBits n == zeroBits
setBit zeroBits n == bit n
testBit zeroBits n == False
popCount zeroBits == 0
Этот метод использует clearBit (bit 0) 0 в качестве своего реализации по умолчанию (которая должна быть эквивалентна zeroBits для типов, которые обладают нулевым битом).
С момента: base-4.7.0.0
bit i — это значение, в котором i-й бит установлен, а все остальные биты сброшены.
Может быть реализован с помощью bitDefault если a также является экземпляром Num.
См. также zeroBits.
setBit :: a -> Int -> a Источник
x `setBit` i эквивалентно x .|. bit i
clearBit :: a -> Int -> a Источник
x `clearBit` i эквивалентно x .&. complement (bit i)
complementBit :: a -> Int -> a Источник
x `complementBit` i эквивалентно x `xor` bit i
testBit :: a -> Int -> Bool Источник
x `testBit` i эквивалентно x .&. bit n /= 0
Другими словами, возвращает True, если бит с смещением @n установлен.
Может быть реализован с помощью testBitDefault если a также является экземпляром Num.
bitSizeMaybe :: a -> Maybe Int Источник
Возвращает количество битов в типе аргумента. Фактическое значение аргумента игнорируется. Возвращает Nothing для типов, которые не имеют фиксированного размера в битах, таких как Integer.
С момента: base-4.7.0.0
Устарело: Используйте bitSizeMaybe или finiteBitSize вместо этого
Возвращает количество битов в типе аргумента. Фактическое значение аргумента игнорируется. Функция bitSize не определена для типов, которые не имеют фиксированного размера в битах, таких как Integer.
Реализация по умолчанию на основе bitSizeMaybe предоставлена с 4.12.0.0.
isSigned :: a -> Bool Источник
Возвращает True, если аргумент является типом со знаком. Фактическое значение аргумента игнорируется
shiftL :: a -> Int -> a infixl 8 Источник
Сдвигает аргумент влево на указанное количество бит (которое должно быть неотрицательным). Некоторые экземпляры могут генерировать исключение Overflow при вводе отрицательного значения.
Экземпляр может определить либо эту функцию и shiftR или унифицированную shift, в зависимости от того, что более удобно для рассматриваемого типа.
unsafeShiftL :: a -> Int -> a Источник
Сдвигает аргумент влево на указанное количество бит. Результат не определён для отрицательных значений сдвига и значений сдвига, больших или равных bitSize.
По умолчанию использует shiftL, если не определено явно экземпляром.
С момента: base-4.5.0.0
shiftR :: a -> Int -> a infixl 8 Источник
Сдвигает первый аргумент вправо на указанное количество бит. Результат не определён для отрицательных значений сдвига и значений сдвига, больших или равных bitSize. Некоторые экземпляры могут генерировать исключение Overflow при вводе отрицательного значения.
Правые сдвиги выполняют расширение знака для типов чисел со знаком; то есть, они заполняют старшие биты единицами, если x отрицательно, и нулями в противном случае.
Экземпляр может определить либо эту функцию и shiftL или унифицированную shift, в зависимости от того, что более удобно для рассматриваемого типа.
unsafeShiftR :: a -> Int -> a Источник
Сдвигает первый аргумент вправо на указанное количество бит, которое должно быть неотрицательным и меньше числа битов в типе.
Правые сдвиги выполняют расширение знака для типов чисел со знаком; то есть, они заполняют старшие биты единицами, если x отрицательно, и нулями в противном случае.
По умолчанию использует shiftR если не определено явно экземпляром.
С момента: base-4.5.0.0
rotateL :: a -> Int -> a infixl 8 Источник
Циклически сдвигает аргумент влево на указанное количество бит (которое должно быть неотрицательным).
Экземпляр может определить либо эту функцию и rotateR или унифицированную rotate, в зависимости от того, что более удобно для рассматриваемого типа.
rotateR :: a -> Int -> a infixl 8 Источник
Циклически сдвигает аргумент вправо на указанное количество бит (которое должно быть неотрицательным).
Экземпляр может определить либо эту функцию и rotateL или унифицированную rotate, в зависимости от того, что более удобно для рассматриваемого типа.
Возвращает количество установленных битов в аргументе. Это число известно как популяционный подсчет или вес Хэмминга.
Может быть реализовано с использованием popCountDefault если a также является экземпляром Num.
Since: base-4.5.0.0
Экземпляры
| Bits CBool Source | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CBool -> CBool -> CBool Source (.|.) :: CBool -> CBool -> CBool Source xor :: CBool -> CBool -> CBool Source complement :: CBool -> CBool Source shift :: CBool -> Int -> CBool Source rotate :: CBool -> Int -> CBool Source setBit :: CBool -> Int -> CBool Source clearBit :: CBool -> Int -> CBool Source complementBit :: CBool -> Int -> CBool Source testBit :: CBool -> Int -> Bool Source bitSizeMaybe :: CBool -> Maybe Int Source bitSize :: CBool -> Int Source isSigned :: CBool -> Bool Source shiftL :: CBool -> Int -> CBool Source unsafeShiftL :: CBool -> Int -> CBool Source shiftR :: CBool -> Int -> CBool Source unsafeShiftR :: CBool -> Int -> CBool Source rotateL :: CBool -> Int -> CBool Source | |
| Bits CChar Source | |
Определено в GHC.Internal.Foreign.C.Types Краткое описание методов(.&.) :: CChar -> CChar -> CChar Источник (.|.) :: CChar -> CChar -> CChar Источник xor :: CChar -> CChar -> CChar Источник complement :: CChar -> CChar Источник shift :: CChar -> Int -> CChar Источник rotate :: CChar -> Int -> CChar Источник setBit :: CChar -> Int -> CChar Источник clearBit :: CChar -> Int -> CChar Источник complementBit :: CChar -> Int -> CChar Источник testBit :: CChar -> Int -> Bool Источник bitSizeMaybe :: CChar -> Maybe Int Источник bitSize :: CChar -> Int Источник isSigned :: CChar -> Bool Источник shiftL :: CChar -> Int -> CChar Источник unsafeShiftL :: CChar -> Int -> CChar Источник shiftR :: CChar -> Int -> CChar Источник unsafeShiftR :: CChar -> Int -> CChar Источник rotateL :: CChar -> Int -> CChar Источник | |
| Bits CInt Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CInt -> CInt -> CInt Исходный код (.|.) :: CInt -> CInt -> CInt Исходный код xor :: CInt -> CInt -> CInt Исходный код complement :: CInt -> CInt Исходный код shift :: CInt -> Int -> CInt Исходный код rotate :: CInt -> Int -> CInt Исходный код bit :: Int -> CInt Исходный код setBit :: CInt -> Int -> CInt Исходный код clearBit :: CInt -> Int -> CInt Исходный код complementBit :: CInt -> Int -> CInt Исходный код testBit :: CInt -> Int -> Bool Исходный код bitSizeMaybe :: CInt -> Maybe Int Исходный код bitSize :: CInt -> Int Исходный код isSigned :: CInt -> Bool Исходный код shiftL :: CInt -> Int -> CInt Исходный код unsafeShiftL :: CInt -> Int -> CInt Исходный код shiftR :: CInt -> Int -> CInt Исходный код unsafeShiftR :: CInt -> Int -> CInt Исходный код rotateL :: CInt -> Int -> CInt Исходный код rotateR :: CInt -> Int -> CInt Исходный код popCount :: CInt -> Int Исходный код | |
| Bits CIntMax Исходный код | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CIntPtr -> CIntPtr -> CIntPtr Источник (.|.) :: CIntPtr -> CIntPtr -> CIntPtr Источник xor :: CIntPtr -> CIntPtr -> CIntPtr Источник complement :: CIntPtr -> CIntPtr Источник shift :: CIntPtr -> Int -> CIntPtr Источник rotate :: CIntPtr -> Int -> CIntPtr Источник bit :: Int -> CIntPtr Источник setBit :: CIntPtr -> Int -> CIntPtr Источник clearBit :: CIntPtr -> Int -> CIntPtr Источник complementBit :: CIntPtr -> Int -> CIntPtr Источник testBit :: CIntPtr -> Int -> Bool Источник bitSizeMaybe :: CIntPtr -> Maybe Int Источник bitSize :: CIntPtr -> Int Источник isSigned :: CIntPtr -> Bool Источник shiftL :: CIntPtr -> Int -> CIntPtr Источник unsafeShiftL :: CIntPtr -> Int -> CIntPtr Источник shiftR :: CIntPtr -> Int -> CIntPtr Источник unsafeShiftR :: CIntPtr -> Int -> CIntPtr Источник rotateL :: CIntPtr -> Int -> CIntPtr Источник | |
| Bits CLLong Источник | |
Определено в GHC.Internal.Foreign.C.Types Краткое описание методов(.&.) :: CSChar -> CSChar -> CSChar Источник (.|.) :: CSChar -> CSChar -> CSChar Источник xor :: CSChar -> CSChar -> CSChar Источник complement :: CSChar -> CSChar Источник shift :: CSChar -> Int -> CSChar Источник rotate :: CSChar -> Int -> CSChar Источник setBit :: CSChar -> Int -> CSChar Источник clearBit :: CSChar -> Int -> CSChar Источник complementBit :: CSChar -> Int -> CSChar Источник testBit :: CSChar -> Int -> Bool Источник bitSizeMaybe :: CSChar -> Maybe Int Источник bitSize :: CSChar -> Int Источник isSigned :: CSChar -> Bool Источник shiftL :: CSChar -> Int -> CSChar Источник unsafeShiftL :: CSChar -> Int -> CSChar Источник shiftR :: CSChar -> Int -> CSChar Источник unsafeShiftR :: CSChar -> Int -> CSChar Источник rotateL :: CSChar -> Int -> CSChar Источник | |
| Bits CShort Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CSize -> CSize -> CSize Источник (.|.) :: CSize -> CSize -> CSize Источник xor :: CSize -> CSize -> CSize Источник complement :: CSize -> CSize Источник shift :: CSize -> Int -> CSize Источник rotate :: CSize -> Int -> CSize Источник setBit :: CSize -> Int -> CSize Источник clearBit :: CSize -> Int -> CSize Источник complementBit :: CSize -> Int -> CSize Источник testBit :: CSize -> Int -> Bool Источник bitSizeMaybe :: CSize -> Maybe Int Источник bitSize :: CSize -> Int Источник isSigned :: CSize -> Bool Источник shiftL :: CSize -> Int -> CSize Источник unsafeShiftL :: CSize -> Int -> CSize Источник shiftR :: CSize -> Int -> CSize Источник unsafeShiftR :: CSize -> Int -> CSize Источник rotateL :: CSize -> Int -> CSize Источник | |
| Bits CUChar Источник | |
Определено в GHC.Internal.Foreign.Ptr Методы(.&.) :: WordPtr -> WordPtr -> WordPtr Источник (.|.) :: WordPtr -> WordPtr -> WordPtr Источник xor :: WordPtr -> WordPtr -> WordPtr Источник complement :: WordPtr -> WordPtr Источник shift :: WordPtr -> Int -> WordPtr Источник rotate :: WordPtr -> Int -> WordPtr Источник bit :: Int -> WordPtr Источник setBit :: WordPtr -> Int -> WordPtr Источник clearBit :: WordPtr -> Int -> WordPtr Источник complementBit :: WordPtr -> Int -> WordPtr Источник testBit :: WordPtr -> Int -> Bool Источник bitSizeMaybe :: WordPtr -> Maybe Int Источник bitSize :: WordPtr -> Int Источник isSigned :: WordPtr -> Bool Источник shiftL :: WordPtr -> Int -> WordPtr Источник unsafeShiftL :: WordPtr -> Int -> WordPtr Источник shiftR :: WordPtr -> Int -> WordPtr Источник unsafeShiftR :: WordPtr -> Int -> WordPtr Источник rotateL :: WordPtr -> Int -> WordPtr Источник | |
| Bits Int16 Источник | С момента: base-2.1 |
Определено в GHC.Internal.Int Методы(.&.) :: Int8 -> Int8 -> Int8 Исходный код (.|.) :: Int8 -> Int8 -> Int8 Исходный код xor :: Int8 -> Int8 -> Int8 Исходный код complement :: Int8 -> Int8 Исходный код shift :: Int8 -> Int -> Int8 Исходный код rotate :: Int8 -> Int -> Int8 Исходный код bit :: Int -> Int8 Исходный код setBit :: Int8 -> Int -> Int8 Исходный код clearBit :: Int8 -> Int -> Int8 Исходный код complementBit :: Int8 -> Int -> Int8 Исходный код testBit :: Int8 -> Int -> Bool Исходный код bitSizeMaybe :: Int8 -> Maybe Int Исходный код bitSize :: Int8 -> Int Исходный код isSigned :: Int8 -> Bool Исходный код shiftL :: Int8 -> Int -> Int8 Исходный код unsafeShiftL :: Int8 -> Int -> Int8 Исходный код shiftR :: Int8 -> Int -> Int8 Исходный код unsafeShiftR :: Int8 -> Int -> Int8 Исходный код rotateL :: Int8 -> Int -> Int8 Исходный код rotateR :: Int8 -> Int -> Int8 Исходный код popCount :: Int8 -> Int Исходный код | |
| Bits CBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CBlkCnt -> CBlkCnt -> CBlkCnt Исходный код (.|.) :: CBlkCnt -> CBlkCnt -> CBlkCnt Исходный код xor :: CBlkCnt -> CBlkCnt -> CBlkCnt Исходный код complement :: CBlkCnt -> CBlkCnt Исходный код shift :: CBlkCnt -> Int -> CBlkCnt Исходный код rotate :: CBlkCnt -> Int -> CBlkCnt Исходный код zeroBits :: CBlkCnt Исходный код bit :: Int -> CBlkCnt Исходный код setBit :: CBlkCnt -> Int -> CBlkCnt Исходный код clearBit :: CBlkCnt -> Int -> CBlkCnt Исходный код complementBit :: CBlkCnt -> Int -> CBlkCnt Исходный код testBit :: CBlkCnt -> Int -> Bool Исходный код bitSizeMaybe :: CBlkCnt -> Maybe Int Исходный код bitSize :: CBlkCnt -> Int Исходный код isSigned :: CBlkCnt -> Bool Исходный код shiftL :: CBlkCnt -> Int -> CBlkCnt Исходный код unsafeShiftL :: CBlkCnt -> Int -> CBlkCnt Исходный код shiftR :: CBlkCnt -> Int -> CBlkCnt Исходный код |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CBlkSize -> CBlkSize -> CBlkSize Исходный код (.|.) :: CBlkSize -> CBlkSize -> CBlkSize Исходный код xor :: CBlkSize -> CBlkSize -> CBlkSize Исходный код complement :: CBlkSize -> CBlkSize Исходный код shift :: CBlkSize -> Int -> CBlkSize Исходный код rotate :: CBlkSize -> Int -> CBlkSize Исходный код zeroBits :: CBlkSize Исходный код bit :: Int -> CBlkSize Исходный код setBit :: CBlkSize -> Int -> CBlkSize Исходный код clearBit :: CBlkSize -> Int -> CBlkSize Исходный код complementBit :: CBlkSize -> Int -> CBlkSize Исходный код testBit :: CBlkSize -> Int -> Bool Исходный код bitSizeMaybe :: CBlkSize -> Maybe Int Исходный код bitSize :: CBlkSize -> Int Исходный код isSigned :: CBlkSize -> Bool Исходный код shiftL :: CBlkSize -> Int -> CBlkSize Исходный код unsafeShiftL :: CBlkSize -> Int -> CBlkSize Исходный код shiftR :: CBlkSize -> Int -> CBlkSize Исходный код |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CClockId -> CClockId -> CClockId Исходный код (.|.) :: CClockId -> CClockId -> CClockId Исходный код xor :: CClockId -> CClockId -> CClockId Исходный код complement :: CClockId -> CClockId Исходный код shift :: CClockId -> Int -> CClockId Исходный код rotate :: CClockId -> Int -> CClockId Исходный код zeroBits :: CClockId Исходный код bit :: Int -> CClockId Исходный код setBit :: CClockId -> Int -> CClockId Исходный код clearBit :: CClockId -> Int -> CClockId Исходный код complementBit :: CClockId -> Int -> CClockId Исходный код testBit :: CClockId -> Int -> Bool Исходный код bitSizeMaybe :: CClockId -> Maybe Int Исходный код bitSize :: CClockId -> Int Исходный код isSigned :: CClockId -> Bool Исходный код shiftL :: CClockId -> Int -> CClockId Исходный код unsafeShiftL :: CClockId -> Int -> CClockId Исходный код shiftR :: CClockId -> Int -> CClockId Исходный код |
Краткое описание методов(.&.) :: CDev -> CDev -> CDev Source (.|.) :: CDev -> CDev -> CDev Source xor :: CDev -> CDev -> CDev Source complement :: CDev -> CDev Source shift :: CDev -> Int -> CDev Source rotate :: CDev -> Int -> CDev Source setBit :: CDev -> Int -> CDev Source clearBit :: CDev -> Int -> CDev Source complementBit :: CDev -> Int -> CDev Source testBit :: CDev -> Int -> Bool Source bitSizeMaybe :: CDev -> Maybe Int Source isSigned :: CDev -> Bool Source shiftL :: CDev -> Int -> CDev Source unsafeShiftL :: CDev -> Int -> CDev Source shiftR :: CDev -> Int -> CDev Source unsafeShiftR :: CDev -> Int -> CDev Source |
rotateL :: CDev -> Целое -> CDev Исходный код rotateR :: CDev -> Целое -> CDev Исходный код popCount :: CDev -> Целое Исходный код | |
| Bits CFsBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CFsBlkCnt -> CFsBlkCnt -> CFsBlkCnt Source (.|.) :: CFsBlkCnt -> CFsBlkCnt -> CFsBlkCnt Source xor :: CFsBlkCnt -> CFsBlkCnt -> CFsBlkCnt Source complement :: CFsBlkCnt -> CFsBlkCnt Source shift :: CFsBlkCnt -> Int -> CFsBlkCnt Source rotate :: CFsBlkCnt -> Int -> CFsBlkCnt Source bit :: Int -> CFsBlkCnt Source setBit :: CFsBlkCnt -> Int -> CFsBlkCnt Source clearBit :: CFsBlkCnt -> Int -> CFsBlkCnt Source complementBit :: CFsBlkCnt -> Int -> CFsBlkCnt Source testBit :: CFsBlkCnt -> Int -> Bool Source bitSizeMaybe :: CFsBlkCnt -> Maybe Int Source bitSize :: CFsBlkCnt -> Int Source isSigned :: CFsBlkCnt -> Bool Source shiftL :: CFsBlkCnt -> Int -> CFsBlkCnt Source unsafeShiftL :: CFsBlkCnt -> Int -> CFsBlkCnt Source |
unsafeShiftR :: CFsBlkCnt -> Int -> CFsBlkCnt Исходный код rotateL :: CFsBlkCnt -> Int -> CFsBlkCnt Исходный код rotateR :: CFsBlkCnt -> Int -> CFsBlkCnt Исходный код popCount :: CFsBlkCnt -> Int Исходный код | |
| Bits CFsFilCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CFsFilCnt -> CFsFilCnt -> CFsFilCnt Source (.|.) :: CFsFilCnt -> CFsFilCnt -> CFsFilCnt Source xor :: CFsFilCnt -> CFsFilCnt -> CFsFilCnt Source complement :: CFsFilCnt -> CFsFilCnt Source shift :: CFsFilCnt -> Int -> CFsFilCnt Source rotate :: CFsFilCnt -> Int -> CFsFilCnt Source bit :: Int -> CFsFilCnt Source setBit :: CFsFilCnt -> Int -> CFsFilCnt Source clearBit :: CFsFilCnt -> Int -> CFsFilCnt Source complementBit :: CFsFilCnt -> Int -> CFsFilCnt Source testBit :: CFsFilCnt -> Int -> Bool Source bitSizeMaybe :: CFsFilCnt -> Maybe Int Source bitSize :: CFsFilCnt -> Int Source isSigned :: CFsFilCnt -> Bool Source shiftL :: CFsFilCnt -> Int -> CFsFilCnt Source unsafeShiftL :: CFsFilCnt -> Int -> CFsFilCnt Source |
Методы(.&.) :: CGid -> CGid -> CGid Source (.|.) :: CGid -> CGid -> CGid Source xor :: CGid -> CGid -> CGid Source complement :: CGid -> CGid Source shift :: CGid -> Int -> CGid Source rotate :: CGid -> Int -> CGid Source setBit :: CGid -> Int -> CGid Source clearBit :: CGid -> Int -> CGid Source complementBit :: CGid -> Int -> CGid Source testBit :: CGid -> Int -> Bool Source bitSizeMaybe :: CGid -> Maybe Int Source isSigned :: CGid -> Bool Source shiftL :: CGid -> Int -> CGid Source unsafeShiftL :: CGid -> Int -> CGid Source shiftR :: CGid -> Int -> CGid Source unsafeShiftR :: CGid -> Int -> CGid Source |
Методы(.&.) :: CId -> CId -> CId Source (.|.) :: CId -> CId -> CId Source xor :: CId -> CId -> CId Source complement :: CId -> CId Source shift :: CId -> Int -> CId Source rotate :: CId -> Int -> CId Source setBit :: CId -> Int -> CId Source clearBit :: CId -> Int -> CId Source complementBit :: CId -> Int -> CId Source testBit :: CId -> Int -> Boolean Source bitSizeMaybe :: CId -> Maybe Int Source isSigned :: CId -> Boolean Source shiftL :: CId -> Int -> CId Source unsafeShiftL :: CId -> Int -> CId Source shiftR :: CId -> Int -> CId Source unsafeShiftR :: CId -> Int -> CId Source |
rotateL :: CId -> Целое -> CId Исходный код rotateR :: CId -> Целое -> CId Исходный код popCount :: CId -> Целое Исходный код | |
| Биты CIno Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Краткое описание методов(.&.) :: CIno -> CIno -> CIno Source (.|.) :: CIno -> CIno -> CIno Source xor :: CIno -> CIno -> CIno Source complement :: CIno -> CIno Source shift :: CIno -> Int -> CIno Source rotate :: CIno -> Int -> CIno Source setBit :: CIno -> Int -> CIno Source clearBit :: CIno -> Int -> CIno Source complementBit :: CIno -> Int -> CIno Source testBit :: CIno -> Int -> Bool Source bitSizeMaybe :: CIno -> Maybe Int Source isSigned :: CIno -> Bool Source shiftL :: CIno -> Int -> CIno Source unsafeShiftL :: CIno -> Int -> CIno Source shiftR :: CIno -> Int -> CIno Source unsafeShiftR :: CIno -> Int -> CIno Source |
rotateL :: CIno -> Целое -> CIno Исходный код rotateR :: CIno -> Целое -> CIno Исходный код popCount :: CIno -> Целое Исходный код | |
| Биты CKey Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Краткое описание методов(.&.) :: CKey -> CKey -> CKey Source (.|.) :: CKey -> CKey -> CKey Source xor :: CKey -> CKey -> CKey Source complement :: CKey -> CKey Source shift :: CKey -> Int -> CKey Source rotate :: CKey -> Int -> CKey Source setBit :: CKey -> Int -> CKey Source clearBit :: CKey -> Int -> CKey Source complementBit :: CKey -> Int -> CKey Source testBit :: CKey -> Int -> Bool Source bitSizeMaybe :: CKey -> Maybe Int Source isSigned :: CKey -> Bool Source shiftL :: CKey -> Int -> CKey Source unsafeShiftL :: CKey -> Int -> CKey Source shiftR :: CKey -> Int -> CKey Source unsafeShiftR :: CKey -> Int -> CKey Source |
rotateL :: CKey -> Целое -> CKey Исходный код rotateR :: CKey -> Целое -> CKey Исходный код popCount :: CKey -> Целое Исходный код | |
| Биты CMode Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Методы(.&.) :: CMode -> CMode -> CMode Source (.|.) :: CMode -> CMode -> CMode Source xor :: CMode -> CMode -> CMode Source complement :: CMode -> CMode Source shift :: CMode -> Int -> CMode Source rotate :: CMode -> Int -> CMode Source setBit :: CMode -> Int -> CMode Source clearBit :: CMode -> Int -> CMode Source complementBit :: CMode -> Int -> CMode Source testBit :: CMode -> Int -> Булево Source bitSizeMaybe :: CMode -> Может быть Int Source bitSize :: CMode -> Int Source isSigned :: CMode -> Булево Source shiftL :: CMode -> Int -> CMode Source unsafeShiftL :: CMode -> Int -> CMode Source shiftR :: CMode -> Int -> CMode Source unsafeShiftR :: CMode -> Int -> CMode Source |
Методы(.&.) :: CNfds -> CNfds -> CNfds Source (.|.) :: CNfds -> CNfds -> CNfds Source xor :: CNfds -> CNfds -> CNfds Source complement :: CNfds -> CNfds Source shift :: CNfds -> Целое -> CNfds Source rotate :: CNfds -> Целое -> CNfds Source setBit :: CNfds -> Целое -> CNfds Source clearBit :: CNfds -> Целое -> CNfds Source complementBit :: CNfds -> Целое -> CNfds Source testBit :: CNfds -> Целое -> Булево Source bitSizeMaybe :: CNfds -> Возможно Целое Source bitSize :: CNfds -> Целое Source isSigned :: CNfds -> Булево Source shiftL :: CNfds -> Целое -> CNfds Source unsafeShiftL :: CNfds -> Целое -> CNfds Source shiftR :: CNfds -> Целое -> CNfds Source unsafeShiftR :: CNfds -> Целое -> CNfds Source |
Краткое описание методов(.&.) :: CNlink -> CNlink -> CNlink Source (.|.) :: CNlink -> CNlink -> CNlink Source xor :: CNlink -> CNlink -> CNlink Source complement :: CNlink -> CNlink Source shift :: CNlink -> Int -> CNlink Source rotate :: CNlink -> Int -> CNlink Source setBit :: CNlink -> Int -> CNlink Source clearBit :: CNlink -> Int -> CNlink Source complementBit :: CNlink -> Int -> CNlink Source testBit :: CNlink -> Int -> Bool Source bitSizeMaybe :: CNlink -> Maybe Int Source bitSize :: CNlink -> Int Source isSigned :: CNlink -> Bool Source shiftL :: CNlink -> Int -> CNlink Source unsafeShiftL :: CNlink -> Int -> CNlink Source shiftR :: CNlink -> Int -> CNlink Source unsafeShiftR :: CNlink -> Int -> CNlink Source |
rotateL :: CNlink -> Int -> CNlink Исходный код rotateR :: CNlink -> Int -> CNlink Исходный код popCount :: CNlink -> Int Исходный код | |
| Bits COff Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Краткое описание методов(.&.) :: COff -> COff -> COff Source (.|.) :: COff -> COff -> COff Source xor :: COff -> COff -> COff Source complement :: COff -> COff Source shift :: COff -> Int -> COff Source rotate :: COff -> Int -> COff Source setBit :: COff -> Int -> COff Source clearBit :: COff -> Int -> COff Source complementBit :: COff -> Int -> COff Source testBit :: COff -> Int -> Bool Source bitSizeMaybe :: COff -> Maybe Int Source isSigned :: COff -> Bool Source shiftL :: COff -> Int -> COff Source unsafeShiftL :: COff -> Int -> COff Source shiftR :: COff -> Int -> COff Source unsafeShiftR :: COff -> Int -> COff Source |
rotateL :: COff -> Целое -> COff Исходный код rotateR :: COff -> Целое -> COff Исходный код popCount :: COff -> Целое Исходный код | |
| Битсы CPid Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Краткое описание методов(.&.) :: CPid -> CPid -> CPid Source (.|.) :: CPid -> CPid -> CPid Source xor :: CPid -> CPid -> CPid Source complement :: CPid -> CPid Source shift :: CPid -> Int -> CPid Source rotate :: CPid -> Int -> CPid Source setBit :: CPid -> Int -> CPid Source clearBit :: CPid -> Int -> CPid Source complementBit :: CPid -> Int -> CPid Source testBit :: CPid -> Int -> Bool Source bitSizeMaybe :: CPid -> Maybe Int Source isSigned :: CPid -> Bool Source shiftL :: CPid -> Int -> CPid Source unsafeShiftL :: CPid -> Int -> CPid Source shiftR :: CPid -> Int -> CPid Source unsafeShiftR :: CPid -> Int -> CPid Source |
rotateL :: CPid -> Целое -> CPid Исходный код rotateR :: CPid -> Целое -> CPid Исходный код popCount :: CPid -> Целое Исходный код | |
| Биты CRLim Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Краткое описание методов(.&.) :: CRLim -> CRLim -> CRLim Source (.|.) :: CRLim -> CRLim -> CRLim Source xor :: CRLim -> CRLim -> CRLim Source complement :: CRLim -> CRLim Source shift :: CRLim -> Int -> CRLim Source rotate :: CRLim -> Int -> CRLim Source setBit :: CRLim -> Int -> CRLim Source clearBit :: CRLim -> Int -> CRLim Source complementBit :: CRLim -> Int -> CRLim Source testBit :: CRLim -> Int -> Bool Source bitSizeMaybe :: CRLim -> Maybe Int Source bitSize :: CRLim -> Int Source isSigned :: CRLim -> Bool Source shiftL :: CRLim -> Int -> CRLim Source unsafeShiftL :: CRLim -> Int -> CRLim Source shiftR :: CRLim -> Int -> CRLim Source unsafeShiftR :: CRLim -> Int -> CRLim Source |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CSocklen -> CSocklen -> CSocklen Исходный код (.|.) :: CSocklen -> CSocklen -> CSocklen Исходный код xor :: CSocklen -> CSocklen -> CSocklen Исходный код complement :: CSocklen -> CSocklen Исходный код shift :: CSocklen -> Int -> CSocklen Исходный код rotate :: CSocklen -> Int -> CSocklen Исходный код zeroBits :: CSocklen Исходный код bit :: Int -> CSocklen Исходный код setBit :: CSocklen -> Int -> CSocklen Исходный код clearBit :: CSocklen -> Int -> CSocklen Исходный код complementBit :: CSocklen -> Int -> CSocklen Исходный код testBit :: CSocklen -> Int -> Bool Исходный код bitSizeMaybe :: CSocklen -> Maybe Int Исходный код bitSize :: CSocklen -> Int Исходный код isSigned :: CSocklen -> Bool Исходный код shiftL :: CSocklen -> Int -> CSocklen Исходный код unsafeShiftL :: CSocklen -> Int -> CSocklen Исходный код shiftR :: CSocklen -> Int -> CSocklen Исходный код |
Методы(.&.) :: CSsize -> CSsize -> CSsize Source (.|.) :: CSsize -> CSsize -> CSsize Source xor :: CSsize -> CSsize -> CSsize Source complement :: CSsize -> CSsize Source shift :: CSsize -> Int -> CSsize Source rotate :: CSsize -> Int -> CSsize Source setBit :: CSsize -> Int -> CSsize Source clearBit :: CSsize -> Int -> CSsize Source complementBit :: CSsize -> Int -> CSsize Source testBit :: CSsize -> Int -> Bool Source bitSizeMaybe :: CSsize -> Maybe Int Source bitSize :: CSsize -> Int Source isSigned :: CSsize -> Bool Source shiftL :: CSsize -> Int -> CSsize Source unsafeShiftL :: CSsize -> Int -> CSsize Source shiftR :: CSsize -> Int -> CSsize Source unsafeShiftR :: CSsize -> Int -> CSsize Source |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: CTcflag -> CTcflag -> CTcflag Исходный код (.|.) :: CTcflag -> CTcflag -> CTcflag Исходный код xor :: CTcflag -> CTcflag -> CTcflag Исходный код complement :: CTcflag -> CTcflag Исходный код shift :: CTcflag -> Int -> CTcflag Исходный код rotate :: CTcflag -> Int -> CTcflag Исходный код zeroBits :: CTcflag Исходный код bit :: Int -> CTcflag Исходный код setBit :: CTcflag -> Int -> CTcflag Исходный код clearBit :: CTcflag -> Int -> CTcflag Исходный код complementBit :: CTcflag -> Int -> CTcflag Исходный код testBit :: CTcflag -> Int -> Bool Исходный код bitSizeMaybe :: CTcflag -> Maybe Int Исходный код bitSize :: CTcflag -> Int Исходный код isSigned :: CTcflag -> Bool Исходный код shiftL :: CTcflag -> Int -> CTcflag Исходный код unsafeShiftL :: CTcflag -> Int -> CTcflag Исходный код shiftR :: CTcflag -> Int -> CTcflag Исходный код |
Краткое описание методов(.&.) :: CUid -> CUid -> CUid Source (.|.) :: CUid -> CUid -> CUid Source xor :: CUid -> CUid -> CUid Source complement :: CUid -> CUid Source shift :: CUid -> Int -> CUid Source rotate :: CUid -> Int -> CUid Source setBit :: CUid -> Int -> CUid Source clearBit :: CUid -> Int -> CUid Source complementBit :: CUid -> Int -> CUid Source testBit :: CUid -> Int -> Bool Source bitSizeMaybe :: CUid -> Maybe Int Source isSigned :: CUid -> Bool Source shiftL :: CUid -> Int -> CUid Source unsafeShiftL :: CUid -> Int -> CUid Source shiftR :: CUid -> Int -> CUid Source unsafeShiftR :: CUid -> Int -> CUid Source |
Определено в GHC.Internal.System.Posix.Types Краткое описание методов(.&.) :: Fd -> Fd -> Fd Исходный код (.|.) :: Fd -> Fd -> Fd Исходный код xor :: Fd -> Fd -> Fd Исходный код complement :: Fd -> Fd Исходный код shift :: Fd -> Int -> Fd Исходный код rotate :: Fd -> Int -> Fd Исходный код bit :: Int -> Fd Исходный код setBit :: Fd -> Int -> Fd Исходный код clearBit :: Fd -> Int -> Fd Исходный код complementBit :: Fd -> Int -> Fd Исходный код testBit :: Fd -> Int -> Bool Исходный код bitSizeMaybe :: Fd -> Maybe Int Исходный код bitSize :: Fd -> Int Исходный код isSigned :: Fd -> Bool Исходный код shiftL :: Fd -> Int -> Fd Исходный код unsafeShiftL :: Fd -> Int -> Fd Исходный код shiftR :: Fd -> Int -> Fd Исходный код unsafeShiftR :: Fd -> Int -> Fd Исходный код |
| Bits Word16 Source | Since: base-2.1 |
Определено в GHC.Internal.Word Методы(.&.) :: Word16 -> Word16 -> Word16 Source (.|.) :: Word16 -> Word16 -> Word16 Source xor :: Word16 -> Word16 -> Word16 Source complement :: Word16 -> Word16 Source shift :: Word16 -> Int -> Word16 Source rotate :: Word16 -> Int -> Word16 Source setBit :: Word16 -> Int -> Word16 Source clearBit :: Word16 -> Int -> Word16 Source complementBit :: Word16 -> Int -> Word16 Source testBit :: Word16 -> Int -> Bool Source bitSizeMaybe :: Word16 -> Maybe Int Source bitSize :: Word16 -> Int Source isSigned :: Word16 -> Bool Source shiftL :: Word16 -> Int -> Word16 Source unsafeShiftL :: Word16 -> Int -> Word16 Source shiftR :: Word16 -> Int -> Word16 Source unsafeShiftR :: Word16 -> Int -> Word16 Source rotateL :: Word16 -> Int -> Word16 Source | |
| Bits Word32 Source | Since: base-2.1 |
Определено в GHC.Internal.Bits Краткое описание методов(.&.) :: Bool -> Bool -> Bool Исходный код (.|.) :: Bool -> Bool -> Bool Исходный код xor :: Bool -> Bool -> Bool Исходный код complement :: Bool -> Bool Исходный код shift :: Bool -> Int -> Bool Исходный код rotate :: Bool -> Int -> Bool Исходный код bit :: Int -> Bool Исходный код setBit :: Bool -> Int -> Bool Исходный код clearBit :: Bool -> Int -> Bool Исходный код complementBit :: Bool -> Int -> Bool Исходный код testBit :: Bool -> Int -> Bool Исходный код bitSizeMaybe :: Bool -> Maybe Int Исходный код bitSize :: Bool -> Int Исходный код isSigned :: Bool -> Bool Исходный код shiftL :: Bool -> Int -> Bool Исходный код unsafeShiftL :: Bool -> Int -> Bool Исходный код shiftR :: Bool -> Int -> Bool Исходный код unsafeShiftR :: Bool -> Int -> Bool Исходный код rotateL :: Bool -> Int -> Bool Исходный код rotateR :: Bool -> Int -> Bool Исходный код popCount :: Bool -> Int Исходный код | |
| Bits Int Исходный код | С версии: base-2.1 |
Определено в GHC.Internal.Bits Методы(.&.) :: Int -> Int -> Int Исходный код (.|.) :: Int -> Int -> Int Исходный код xor :: Int -> Int -> Int Исходный код complement :: Int -> Int Исходный код shift :: Int -> Int -> Int Исходный код rotate :: Int -> Int -> Int Исходный код bit :: Int -> Int Исходный код setBit :: Int -> Int -> Int Исходный код clearBit :: Int -> Int -> Int Исходный код complementBit :: Int -> Int -> Int Исходный код testBit :: Int -> Int -> Bool Исходный код bitSizeMaybe :: Int -> Maybe Int Исходный код bitSize :: Int -> Int Исходный код isSigned :: Int -> Bool Исходный код shiftL :: Int -> Int -> Int Исходный код unsafeShiftL :: Int -> Int -> Int Исходный код shiftR :: Int -> Int -> Int Исходный код unsafeShiftR :: Int -> Int -> Int Исходный код rotateL :: Int -> Int -> Int Исходный код rotateR :: Int -> Int -> Int Исходный код popCount :: Int -> Int Исходный код | |
| Bits Word Исходный код | С момента выпуска: base-2.1 |
Определено в GHC.Internal.Bits Методы(.&.) :: Word -> Word -> Word Исходный код (.|.) :: Word -> Word -> Word Исходный код xor :: Word -> Word -> Word Исходный код complement :: Word -> Word Исходный код shift :: Word -> Int -> Word Исходный код rotate :: Word -> Int -> Word Исходный код bit :: Int -> Word Исходный код setBit :: Word -> Int -> Word Исходный код clearBit :: Word -> Int -> Word Исходный код complementBit :: Word -> Int -> Word Исходный код testBit :: Word -> Int -> Bool Исходный код bitSizeMaybe :: Word -> Maybe Int Исходный код bitSize :: Word -> Int Исходный код isSigned :: Word -> Bool Исходный код shiftL :: Word -> Int -> Word Исходный код unsafeShiftL :: Word -> Int -> Word Исходный код shiftR :: Word -> Int -> Word Исходный код unsafeShiftR :: Word -> Int -> Word Исходный код rotateL :: Word -> Int -> Word Исходный код rotateR :: Word -> Int -> Word Исходный код popCount :: Word -> Int Исходный код | |
| Bits a => Bits (And a) Исходный код | С версии: base-4.16 |
класс Bits b => FiniteBits b где Источник
Класс FiniteBits обозначает типы с конечным, фиксированным числом битов.
С версии: base-4.7.0.0
Минимальное полное определение
Методы
finiteBitSize :: b -> Int Source
Возвращает количество битов в типе аргумента. Фактическое значение аргумента игнорируется. Более того, finiteBitSize является полным, в отличие от устаревшей функции bitSize, которую она заменяет.
finiteBitSize = bitSize bitSizeMaybe = Just . finiteBitSize
С версии: base-4.7.0.0
countLeadingZeros :: b -> Int Source
Подсчитывает количество нулевых битов, предшествующих самому значащему установленным биту.
countLeadingZeros (zeroBits :: a) = finiteBitSize (zeroBits :: a)
countLeadingZeros может быть использован для вычисления логарифма по основанию 2 через
logBase2 x = finiteBitSize x - 1 - countLeadingZeros x
Примечание: реализация по умолчанию для этого метода намеренно простая. Однако экземпляры, предоставленные для примитивных целочисленных типов, реализованы с использованием машинных инструкций, специфичных для процессора.
С версии: base-4.8.0.0
countTrailingZeros :: b -> Int Source
Подсчитывает количество нулевых битов, следующих за наименее значимым установленным битом.
countTrailingZeros (zeroBits :: a) = finiteBitSize (zeroBits :: a) countTrailingZeros . negate = countTrailingZeros
Связанная операция find-first-set может быть выражена через countTrailingZeros следующим образом
findFirstSet x = 1 + countTrailingZeros x
Примечание: реализация по умолчанию для этого метода намеренно простая. Однако экземпляры, предоставленные для примитивных целочисленных типов, реализованы с использованием машинных инструкций, специфичных для процессора.
С версии: base-4.8.0.0
Экземпляры
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CPtrdiff Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CPtrdiff -> Int Исходный код | |
| FiniteBits CSChar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CShort Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CSigAtomic Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CSigAtomic -> Int Исходный код | |
| FiniteBits CSize Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CUChar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CUInt Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CUIntMax Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CUIntMax -> Int Исходный код | |
| FiniteBits CUIntPtr Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CUIntPtr -> Int Исходный код | |
| FiniteBits CULLong Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CULLong -> Int Исходный код | |
| FiniteBits CULong Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits CUShort Исходный код | |
Определено в GHC.Internal.Foreign.C.Types МетодыfiniteBitSize :: CUShort -> Int Исходный код | |
| FiniteBits CWchar Исходный код | |
Определено в GHC.Internal.Foreign.C.Types | |
| FiniteBits IntPtr Исходный код | |
Определено в GHC.Internal.Foreign.Ptr | |
| FiniteBits WordPtr Исходный код | |
Определено в GHC.Internal.Foreign.Ptr МетодыfiniteBitSize :: WordPtr -> Int Исходный код | |
| FiniteBits Int16 Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Int | |
| FiniteBits Int32 Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Int | |
| FiniteBits Int64 Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Int | |
| FiniteBits Int8 Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Int | |
| FiniteBits CBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CBlkCnt -> Int Исходный код | |
| FiniteBits CBlkSize Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CBlkSize -> Int Исходный код | |
| FiniteBits CClockId Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CClockId -> Int Исходный код | |
| FiniteBits CDev Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методовfiniteBitSize :: CTcflag -> Int Исходный код | |
| FiniteBits CUid Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методовfiniteBitSize :: CUid -> Int Исходный код countLeadingZeros :: CUid -> Int Исходный код | |
| FiniteBits Fd Исходный код | |
Определено в GHC.Internal.System.Posix.Types Краткое описание методовfiniteBitSize :: Fd -> Int Исходный код countLeadingZeros :: Fd -> Int Исходный код countTrailingZeros :: Fd -> Int Исходный код | |
| FiniteBits Word16 Исходный код | С версии: base-4.6.0.0 |
Определено в GHC.Internal.Word Краткое описание методовfiniteBitSize :: Word16 -> Int Исходный код | |
| FiniteBits Word32 Исходный код | С версии: base-4.6.0.0 |
Определено в GHC.Internal.Word Краткое описание методовfiniteBitSize :: Word32 -> Int Исходный код | |
| FiniteBits Word64 Исходный код | С версии: base-4.6.0.0 |
Определено в GHC.Internal.Word | |
| FiniteBits Word8 Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Word | |
| FiniteBits Bool Исходный код | С момента: base-4.7.0.0 |
Определено в GHC.Internal.Bits | |
| FiniteBits Int Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Bits МетодыfiniteBitSize :: Int -> Int Исходный код countLeadingZeros :: Int -> Int Исходный код countTrailingZeros :: Int -> Int Исходный код | |
| FiniteBits Word Исходный код | С момента: base-4.6.0.0 |
Определено в GHC.Internal.Bits | |
| FiniteBits a => FiniteBits (And a) Исходный код | С момента: base-4.16 |
Определено в GHC.Internal.Data.Bits МетодыfiniteBitSize :: And a -> Int Исходный код countLeadingZeros :: And a -> Int Исходный код countTrailingZeros :: And a -> Int Исходный код | |
| FiniteBits a => FiniteBits (Iff a) Исходный код | С момента: base-4.16 |
Дополнительные функции
bitDefault :: (Bits a, Num a) => Int -> a Исходный код
Реализация по умолчанию для bit.
Обратите внимание, что: bitDefault i = 1 shiftL i
С версии: base-4.6.0.0
testBitDefault :: (Bits a, Num a) => a -> Int -> Bool Source
Реализация по умолчанию для testBit.
Обратите внимание, что: testBitDefault x i = (x .&. bit i) /= 0
С версии: base-4.6.0.0
popCountDefault :: (Bits a, Num a) => a -> Int Source
Реализация по умолчанию для popCount.
Эта реализация преднамеренно простая. Ожидается, что экземпляры обеспечат оптимизированную реализацию для своего размера.
С версии: base-4.6.0.0
toIntegralSized :: (Integral a, Integral b, Bits a, Bits b) => a -> Maybe b Source
Попытка преобразовать тип Integral a в тип Integral b с использованием размера типов, измеренного методами Bits.
Более простой вариант этой функции:
toIntegral :: (Integral a, Integral b) => a -> Maybe b
toIntegral x
| toInteger x == toInteger y = Just y
| otherwise = Nothing
where
y = fromIntegral x
В этом варианте требуется прохождение через Integer, что может быть неэффективно. Однако, toIntegralSized оптимизирован, чтобы позволить GHC статически определить относительные размеры типов (как измеряется bitSizeMaybe и isSigned) и избежать прохождения через Integer для многих типов. (Реализация использует fromIntegral, который сам оптимизирован с правилами для типов base, но может пройти через Integer для некоторых пар типов.)
С версии: base-4.8.0.0
oneBits :: FiniteBits a => a Source
Более лаконичная версия complement zeroBits.
>>> complement (zeroBits :: Word) == (oneBits :: Word) True
>>> complement (oneBits :: Word) == (zeroBits :: Word) True
Примечание
Ограничение на oneBits, вероятно, слишком строго. Однако, поскольку у некоторых типов (например, Natural) есть неопределенные complement, это единственный безопасный выбор.
С версии: base-4.16
(.^.) :: Bits a => a -> a -> a infixl 6 Source
Инфиксная версия xor.
С версии: base-4.17
(.>>.) :: Bits a => a -> Int -> a infixl 8 Source
Инфиксная версия shiftR.
С версии: base-4.17
(.<<.) :: Bits a => a -> Int -> a infixl 8 Source
Инфиксная версия shiftL.
С версии: base-4.17
(!>>.) :: Bits a => a -> Int -> a infixl 8 Source
Инфиксная версия unsafeShiftR.
С версии: base-4.17
(!<<.) :: Bits a => a -> Int -> a infixl 8 Source
Инфиксная версия unsafeShiftL.
С версии: base-4.17
Новые типы
Моноид по битовому И.
>>> getAnd (And 0xab <> And 0x12) :: Word8 2
С версии: base-4.16
Экземпляры
| FiniteBits a => Monoid (And a) Source |
Это ограничение, вероятно, слишком строго. Однако, поскольку у некоторых типов (например, С версии: base-4.16 |
| Bits a => Semigroup (And a) Source | С версии: base-4.16 |
| Bits a => Bits (And a) Source | С версии: base-4.16 |
| Enum a => Enum (И a) Источник | С момента: base-4.16 |
| Read a => Read (И a) Источник | С момента: base-4.16 |
| Show a => Show (И a) Источник | С момента: base-4.16 |
| Eq a => Eq (И a) Источник | С момента: base-4.16 |
newtype ИсключающееИли a Источник
Моноид при побитовом включительно ИЛИ.
>>> getIor (Ior 0xab <> Ior 0x12) :: Word8 187
С момента: base-4.16
Конструкторы
| ИсключающееИли | |
Поля
| |
Примеры реализации
| Bits a => Monoid (Ior a) Исходный код | С версии: base-4.16 |
Определено в GHC.Internal.Data.Bits Методыmempty :: Ior a Исходный код mappend :: Ior a -> Ior a -> Ior a Исходный код mconcat :: [Ior a] -> Ior a Исходный код | |
| Bits a => Semigroup (Ior a) Исходный код | С версии: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(<>) :: Ior a -> Ior a -> Ior a Исходный код sconcat :: НепустойСписок (Ior a) -> Ior a Исходный код stimes :: Целочисленный b => b -> Ior a -> Ior a Исходный код | |
| Bits a => Bits (Ior a) Исходный код | С версии: base-4.16 |
| Enum a => Enum (Ior a) Source | С момента: base-4.16 |
| Read a => Read (Ior a) Source | С момента: base-4.16 |
| Show a => Show (Ior a) Source | С момента: base-4.16 |
| Eq a => Eq (Ior a) Source | С момента: base-4.16 |
Моноид по битовому XOR.
>>> getXor (Xor 0xab <> Xor 0x12) :: Word8 185
С момента: base-4.16
| Enum a => Enum (Xor a) Source | С момента: base-4.16 |
| Read a => Read (Xor a) Source | С момента: base-4.16 |
| Show a => Show (Xor a) Source | С момента: base-4.16 |
| Eq a => Eq (Xor a) Source | С момента: base-4.16 |
Моноид по битовому 'равенству'; определён как 1 если соответствующие биты совпадают, и 0 в противном случае.
>>> getIff (Iff 0xab <> Iff 0x12) :: Word8 70
С момента: base-4.16
Примеры
| FiniteBits a => Monoid (Iff a) Исходный код |
Данное ограничение, вероятно, слишком строго. Однако, поскольку некоторые типы (например, С версии: base-4.16 |
Определено в GHC.Internal.Data.Bits Методыmempty :: Iff a Исходный код mappend :: Iff a -> Iff a -> Iff a Исходный код mconcat :: [Iff a] -> Iff a Исходный код | |
| FiniteBits a => Semigroup (Iff a) Исходный код |
Данное ограничение, вероятно, слишком строго. Однако, поскольку некоторые типы (например, С версии: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(<>) :: Iff a -> Iff a -> Iff a Исходный код sconcat :: NonEmpty (Iff a) -> Iff a Исходный код stimes :: Integral b => b -> Iff a -> Iff a Исходный код | |
| Bits a => Bits (Iff a) Исходный код | С версии: base-4.16 |
| Enum a => Enum (Iff a) Источник | С момента: base-4.16 |
Определено в GHC.Internal.Data.Bits Методыsucc :: Iff a -> Iff a Источник pred :: Iff a -> Iff a Источник toEnum :: Int -> Iff a Источник fromEnum :: Iff a -> Int Источник enumFrom :: Iff a -> [Iff a] Источник enumFromThen :: Iff a -> Iff a -> [Iff a] Источник enumFromTo :: Iff a -> Iff a -> [Iff a] Источник enumFromThenTo :: Iff a -> Iff a -> Iff a -> [Iff a] Источник | |
| Read a => Read (Iff a) Источник | С момента: base-4.16 |
| Show a => Show (Iff a) Источник | С момента: base-4.16 |
| Eq a => Eq (Iff a) Источник | С момента: base-4.16 |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.12.1/docs/libraries/base-4.21.0.0-8e62/Data-Bits.html