Data.Bits
| Авторское право | (c) Университет Глазго, 2001 |
|---|---|
| Лицензия | в стиле BSD (см. файл libraries/base/LICENSE) |
| Сопровождающий | libraries@haskell.org |
| Стабильность | стабильная |
| Переносимость | переносимая |
| Безопасный Haskell | Safe |
| Язык | Haskell2010 |
Содержание
Описание
Этот модуль определяет побитовые операции для знаковых и беззнаковых целых чисел. Экземпляры класса Bits для типов Int и Integer доступны из этого модуля, а экземпляры для целочисленных типов с явно заданной разрядностью доступны из модулей Data.Int и Data.Word.
Классы типов
class Eq a => Bits a where Исходный код
Класс Bits определяет побитовые операции над целочисленными типами.
- Нумерация битов начинается с 0, причём бит 0 — наименее значащий.
Минимальное полное определение
(.&.), (.|.), xor, complement, (shift | shiftL, shiftR), (rotate | rotateL, rotateR), bitSize, bitSizeMaybe, isSigned, testBit, bit, popCount
Методы
(.&.) :: 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 :: a Исходный код
zeroBits — это значение, у которого все биты сброшены.
Должны выполняться следующие законы (для всех допустимых индексов битов n):
clearBit zeroBits n == zeroBits
setBit zeroBits n == bit n
testBit zeroBits n == False
popCount zeroBits == 0
В качестве реализации по умолчанию этот метод использует clearBit (bit 0) 0 (который должен быть эквивалентен zeroBits для типов, у которых есть бит с индексом 0).
Начиная с: base-4.7.0.0
bit :: Int -> a Исходный код
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
bitSize :: a -> Int Исходный код
Устарело: используйте вместо этого 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 — в зависимости от того, что удобнее для данного типа.
popCount :: a -> Int Исходный код
Возвращает число установленных битов в аргументе. Это число называется количеством единичных битов или весом Хэмминга.
Можно реализовать с помощью popCountDefault, если a также является экземпляром Num.
Начиная с: base-4.5.0.0
Экземпляры
Определено в 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 Источник 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 Источник | |
| Bits CIntMax Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CIntMax -> CIntMax -> CIntMax Источник (.|.) :: CIntMax -> CIntMax -> CIntMax Источник xor :: CIntMax -> CIntMax -> CIntMax Источник complement :: CIntMax -> CIntMax Источник shift :: CIntMax -> Int -> CIntMax Источник rotate :: CIntMax -> Int -> CIntMax Источник bit :: Int -> CIntMax Источник setBit :: CIntMax -> Int -> CIntMax Источник clearBit :: CIntMax -> Int -> CIntMax Источник complementBit :: CIntMax -> Int -> CIntMax Источник testBit :: CIntMax -> Int -> Bool Источник bitSizeMaybe :: CIntMax -> Maybe Int Источник bitSize :: CIntMax -> Int Источник isSigned :: CIntMax -> Bool Источник shiftL :: CIntMax -> Int -> CIntMax Источник unsafeShiftL :: CIntMax -> Int -> CIntMax Источник shiftR :: CIntMax -> Int -> CIntMax Источник unsafeShiftR :: CIntMax -> Int -> CIntMax Источник rotateL :: CIntMax -> Int -> CIntMax Источник | |
| Bits CIntPtr Источник | |
Определено в 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 Методы(.&.) :: CLLong -> CLLong -> CLLong Источник (.|.) :: CLLong -> CLLong -> CLLong Источник xor :: CLLong -> CLLong -> CLLong Источник complement :: CLLong -> CLLong Источник shift :: CLLong -> Int -> CLLong Источник rotate :: CLLong -> Int -> CLLong Источник setBit :: CLLong -> Int -> CLLong Источник clearBit :: CLLong -> Int -> CLLong Источник complementBit :: CLLong -> Int -> CLLong Источник testBit :: CLLong -> Int -> Bool Источник bitSizeMaybe :: CLLong -> Maybe Int Источник bitSize :: CLLong -> Int Источник isSigned :: CLLong -> Bool Источник shiftL :: CLLong -> Int -> CLLong Источник unsafeShiftL :: CLLong -> Int -> CLLong Источник shiftR :: CLLong -> Int -> CLLong Источник unsafeShiftR :: CLLong -> Int -> CLLong Источник rotateL :: CLLong -> Int -> CLLong Источник | |
| Bits CLong Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CLong -> CLong -> CLong Источник (.|.) :: CLong -> CLong -> CLong Источник xor :: CLong -> CLong -> CLong Источник complement :: CLong -> CLong Источник shift :: CLong -> Int -> CLong Источник rotate :: CLong -> Int -> CLong Источник setBit :: CLong -> Int -> CLong Источник clearBit :: CLong -> Int -> CLong Источник complementBit :: CLong -> Int -> CLong Источник testBit :: CLong -> Int -> Bool Источник bitSizeMaybe :: CLong -> Maybe Int Источник bitSize :: CLong -> Int Источник isSigned :: CLong -> Bool Источник shiftL :: CLong -> Int -> CLong Источник unsafeShiftL :: CLong -> Int -> CLong Источник shiftR :: CLong -> Int -> CLong Источник unsafeShiftR :: CLong -> Int -> CLong Источник rotateL :: CLong -> Int -> CLong Источник | |
| Bits CPtrdiff Источник | |
Определено в 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.C.Types Методы(.&.) :: CUInt -> CUInt -> CUInt Источник (.|.) :: CUInt -> CUInt -> CUInt Источник xor :: CUInt -> CUInt -> CUInt Источник complement :: CUInt -> CUInt Источник shift :: CUInt -> Int -> CUInt Источник rotate :: CUInt -> Int -> CUInt Источник setBit :: CUInt -> Int -> CUInt Источник clearBit :: CUInt -> Int -> CUInt Источник complementBit :: CUInt -> Int -> CUInt Источник testBit :: CUInt -> Int -> Bool Источник bitSizeMaybe :: CUInt -> Maybe Int Источник bitSize :: CUInt -> Int Источник isSigned :: CUInt -> Bool Источник shiftL :: CUInt -> Int -> CUInt Источник unsafeShiftL :: CUInt -> Int -> CUInt Источник shiftR :: CUInt -> Int -> CUInt Источник unsafeShiftR :: CUInt -> Int -> CUInt Источник rotateL :: CUInt -> Int -> CUInt Источник | |
| Bits CUIntMax Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CUIntPtr -> CUIntPtr -> CUIntPtr Источник (.|.) :: CUIntPtr -> CUIntPtr -> CUIntPtr Источник xor :: CUIntPtr -> CUIntPtr -> CUIntPtr Источник complement :: CUIntPtr -> CUIntPtr Источник shift :: CUIntPtr -> Int -> CUIntPtr Источник rotate :: CUIntPtr -> Int -> CUIntPtr Источник bit :: Int -> CUIntPtr Источник setBit :: CUIntPtr -> Int -> CUIntPtr Источник clearBit :: CUIntPtr -> Int -> CUIntPtr Источник complementBit :: CUIntPtr -> Int -> CUIntPtr Источник testBit :: CUIntPtr -> Int -> Bool Источник bitSizeMaybe :: CUIntPtr -> Maybe Int Источник bitSize :: CUIntPtr -> Int Источник isSigned :: CUIntPtr -> Bool Источник shiftL :: CUIntPtr -> Int -> CUIntPtr Источник unsafeShiftL :: CUIntPtr -> Int -> CUIntPtr Источник shiftR :: CUIntPtr -> Int -> CUIntPtr Источник unsafeShiftR :: CUIntPtr -> Int -> CUIntPtr Источник rotateL :: CUIntPtr -> Int -> CUIntPtr Источник | |
| Bits CULLong Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CULLong -> CULLong -> CULLong Источник (.|.) :: CULLong -> CULLong -> CULLong Источник xor :: CULLong -> CULLong -> CULLong Источник complement :: CULLong -> CULLong Источник shift :: CULLong -> Int -> CULLong Источник rotate :: CULLong -> Int -> CULLong Источник bit :: Int -> CULLong Источник setBit :: CULLong -> Int -> CULLong Источник clearBit :: CULLong -> Int -> CULLong Источник complementBit :: CULLong -> Int -> CULLong Источник testBit :: CULLong -> Int -> Bool Источник bitSizeMaybe :: CULLong -> Maybe Int Источник bitSize :: CULLong -> Int Источник isSigned :: CULLong -> Bool Источник shiftL :: CULLong -> Int -> CULLong Источник unsafeShiftL :: CULLong -> Int -> CULLong Источник shiftR :: CULLong -> Int -> CULLong Источник unsafeShiftR :: CULLong -> Int -> CULLong Источник rotateL :: CULLong -> Int -> CULLong Источник | |
| Bits CULong Источник | |
Определено в GHC.Internal.Foreign.C.Types Методы(.&.) :: CULong -> CULong -> CULong Источник (.|.) :: CULong -> CULong -> CULong Источник xor :: CULong -> CULong -> CULong Источник complement :: CULong -> CULong Источник shift :: CULong -> Int -> CULong Источник rotate :: CULong -> Int -> CULong Источник setBit :: CULong -> Int -> CULong Источник clearBit :: CULong -> Int -> CULong Источник complementBit :: CULong -> Int -> CULong Источник testBit :: CULong -> Int -> Bool Источник bitSizeMaybe :: CULong -> Maybe Int Источник bitSize :: CULong -> Int Источник isSigned :: CULong -> Bool Источник shiftL :: CULong -> Int -> CULong Источник unsafeShiftL :: CULong -> Int -> CULong Источник shiftR :: CULong -> Int -> CULong Источник unsafeShiftR :: CULong -> Int -> CULong Источник rotateL :: CULong -> Int -> CULong Источник | |
| Bits CUShort Источник | |
Определён в GHC.Internal.Foreign.C.Types Методы(.&.) :: CWchar -> CWchar -> CWchar Источник (.|.) :: CWchar -> CWchar -> CWchar Источник xor :: CWchar -> CWchar -> CWchar Источник complement :: CWchar -> CWchar Источник shift :: CWchar -> Int -> CWchar Источник rotate :: CWchar -> Int -> CWchar Источник setBit :: CWchar -> Int -> CWchar Источник clearBit :: CWchar -> Int -> CWchar Источник complementBit :: CWchar -> Int -> CWchar Источник testBit :: CWchar -> Int -> Bool Источник bitSizeMaybe :: CWchar -> Maybe Int Источник bitSize :: CWchar -> Int Источник isSigned :: CWchar -> Bool Источник shiftL :: CWchar -> Int -> CWchar Источник unsafeShiftL :: CWchar -> Int -> CWchar Источник shiftR :: CWchar -> Int -> CWchar Источник unsafeShiftR :: CWchar -> Int -> CWchar Источник rotateL :: CWchar -> Int -> CWchar Источник | |
| Bits IntPtr Источник | |
Определено в GHC.Internal.Int Методы(.&.) :: Int16 -> Int16 -> Int16 Источник (.|.) :: Int16 -> Int16 -> Int16 Источник xor :: Int16 -> Int16 -> Int16 Источник complement :: Int16 -> Int16 Источник shift :: Int16 -> Int -> Int16 Источник rotate :: Int16 -> Int -> Int16 Источник setBit :: Int16 -> Int -> Int16 Источник clearBit :: Int16 -> Int -> Int16 Источник complementBit :: Int16 -> Int -> Int16 Источник testBit :: Int16 -> Int -> Bool Источник bitSizeMaybe :: Int16 -> Maybe Int Источник bitSize :: Int16 -> Int Источник isSigned :: Int16 -> Bool Источник shiftL :: Int16 -> Int -> Int16 Источник unsafeShiftL :: Int16 -> Int -> Int16 Источник shiftR :: Int16 -> Int -> Int16 Источник unsafeShiftR :: Int16 -> Int -> Int16 Источник rotateL :: Int16 -> Int -> Int16 Источник | |
| Bits Int32 Источник | Since: 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 Источник 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 Источник unsafeShiftR :: CBlkCnt -> Int -> CBlkCnt Источник rotateL :: CBlkCnt -> Int -> CBlkCnt Источник | |
| Bits CBlkSize Источник | |
Определено в 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 Источник 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 Источник unsafeShiftR :: CBlkSize -> Int -> CBlkSize Источник rotateL :: CBlkSize -> Int -> CBlkSize Источник | |
| Bits CClockId Источник | |
Определено в 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 Источник 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 Источник unsafeShiftR :: CClockId -> Int -> CClockId Источник rotateL :: CClockId -> Int -> CClockId Источник | |
| Bits CDev Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CDev -> CDev -> CDev Источник (.|.) :: CDev -> CDev -> CDev Источник xor :: CDev -> CDev -> CDev Источник complement :: CDev -> CDev Источник shift :: CDev -> Int -> CDev Источник rotate :: CDev -> Int -> CDev Источник setBit :: CDev -> Int -> CDev Источник clearBit :: CDev -> Int -> CDev Источник complementBit :: CDev -> Int -> CDev Источник testBit :: CDev -> Int -> Bool Источник bitSizeMaybe :: CDev -> Maybe Int Источник bitSize :: CDev -> Int Источник isSigned :: CDev -> Bool Источник shiftL :: CDev -> Int -> CDev Источник unsafeShiftL :: CDev -> Int -> CDev Источник shiftR :: CDev -> Int -> CDev Источник unsafeShiftR :: CDev -> Int -> CDev Источник rotateL :: CDev -> Int -> CDev Источник | |
| Bits CFsBlkCnt Источник | |
Определён в GHC.Internal.System.Posix.Types Методы(.&.) :: CGid -> CGid -> CGid Исходный код (.|.) :: CGid -> CGid -> CGid Исходный код xor :: CGid -> CGid -> CGid Исходный код complement :: CGid -> CGid Исходный код shift :: CGid -> Int -> CGid Исходный код rotate :: CGid -> Int -> CGid Исходный код bit :: Int -> CGid Исходный код setBit :: CGid -> Int -> CGid Исходный код clearBit :: CGid -> Int -> CGid Исходный код complementBit :: CGid -> Int -> CGid Исходный код testBit :: CGid -> Int -> Bool Исходный код bitSizeMaybe :: CGid -> Maybe Int Исходный код bitSize :: CGid -> Int Исходный код isSigned :: CGid -> Bool Исходный код shiftL :: CGid -> Int -> CGid Исходный код unsafeShiftL :: CGid -> Int -> CGid Исходный код shiftR :: CGid -> Int -> CGid Исходный код unsafeShiftR :: CGid -> Int -> CGid Исходный код rotateL :: CGid -> Int -> CGid Исходный код rotateR :: CGid -> Int -> CGid Исходный код popCount :: CGid -> Int Исходный код | |
| Bits CId Исходный код | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CId -> CId -> CId Источник (.|.) :: CId -> CId -> CId Источник xor :: CId -> CId -> CId Источник complement :: CId -> CId Источник shift :: CId -> Int -> CId Источник rotate :: CId -> Int -> CId Источник setBit :: CId -> Int -> CId Источник clearBit :: CId -> Int -> CId Источник complementBit :: CId -> Int -> CId Источник testBit :: CId -> Int -> Bool Источник bitSizeMaybe :: CId -> Maybe Int Источник bitSize :: CId -> Int Источник isSigned :: CId -> Bool Источник shiftL :: CId -> Int -> CId Источник unsafeShiftL :: CId -> Int -> CId Источник shiftR :: CId -> Int -> CId Источник unsafeShiftR :: CId -> Int -> CId Источник rotateL :: CId -> Int -> CId Источник | |
| Bits CIno Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CIno -> CIno -> CIno Исходный код (.|.) :: CIno -> CIno -> CIno Исходный код xor :: CIno -> CIno -> CIno Исходный код complement :: CIno -> CIno Исходный код shift :: CIno -> Int -> CIno Исходный код rotate :: CIno -> Int -> CIno Исходный код bit :: Int -> CIno Исходный код setBit :: CIno -> Int -> CIno Исходный код clearBit :: CIno -> Int -> CIno Исходный код complementBit :: CIno -> Int -> CIno Исходный код testBit :: CIno -> Int -> Bool Исходный код bitSizeMaybe :: CIno -> Maybe Int Исходный код bitSize :: CIno -> Int Исходный код isSigned :: CIno -> Bool Исходный код shiftL :: CIno -> Int -> CIno Исходный код unsafeShiftL :: CIno -> Int -> CIno Исходный код shiftR :: CIno -> Int -> CIno Исходный код unsafeShiftR :: CIno -> Int -> CIno Исходный код rotateL :: CIno -> Int -> CIno Исходный код rotateR :: CIno -> Int -> CIno Исходный код popCount :: CIno -> Int Исходный код | |
| Bits CKey Исходный код | |
Определён в GHC.Internal.System.Posix.Types Методы(.&.) :: CKey -> CKey -> CKey Исходный код (.|.) :: CKey -> CKey -> CKey Исходный код xor :: CKey -> CKey -> CKey Исходный код complement :: CKey -> CKey Исходный код shift :: CKey -> Int -> CKey Исходный код rotate :: CKey -> Int -> CKey Исходный код bit :: Int -> CKey Исходный код setBit :: CKey -> Int -> CKey Исходный код clearBit :: CKey -> Int -> CKey Исходный код complementBit :: CKey -> Int -> CKey Исходный код testBit :: CKey -> Int -> Bool Исходный код bitSizeMaybe :: CKey -> Maybe Int Исходный код bitSize :: CKey -> Int Исходный код isSigned :: CKey -> Bool Исходный код shiftL :: CKey -> Int -> CKey Исходный код unsafeShiftL :: CKey -> Int -> CKey Исходный код shiftR :: CKey -> Int -> CKey Исходный код unsafeShiftR :: CKey -> Int -> CKey Исходный код rotateL :: CKey -> Int -> CKey Исходный код rotateR :: CKey -> Int -> CKey Исходный код popCount :: CKey -> Int Исходный код | |
| Bits CMode Исходный код | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CMode -> CMode -> CMode Источник (.|.) :: CMode -> CMode -> CMode Источник xor :: CMode -> CMode -> CMode Источник complement :: CMode -> CMode Источник shift :: CMode -> Int -> CMode Источник rotate :: CMode -> Int -> CMode Источник setBit :: CMode -> Int -> CMode Источник clearBit :: CMode -> Int -> CMode Источник complementBit :: CMode -> Int -> CMode Источник testBit :: CMode -> Int -> Bool Источник bitSizeMaybe :: CMode -> Maybe Int Источник bitSize :: CMode -> Int Источник isSigned :: CMode -> Bool Источник shiftL :: CMode -> Int -> CMode Источник unsafeShiftL :: CMode -> Int -> CMode Источник shiftR :: CMode -> Int -> CMode Источник unsafeShiftR :: CMode -> Int -> CMode Источник rotateL :: CMode -> Int -> CMode Источник | |
| Bits CNfds Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CNfds -> CNfds -> CNfds Источник (.|.) :: CNfds -> CNfds -> CNfds Источник xor :: CNfds -> CNfds -> CNfds Источник complement :: CNfds -> CNfds Источник shift :: CNfds -> Int -> CNfds Источник rotate :: CNfds -> Int -> CNfds Источник setBit :: CNfds -> Int -> CNfds Источник clearBit :: CNfds -> Int -> CNfds Источник complementBit :: CNfds -> Int -> CNfds Источник testBit :: CNfds -> Int -> Bool Источник bitSizeMaybe :: CNfds -> Maybe Int Источник bitSize :: CNfds -> Int Источник isSigned :: CNfds -> Bool Источник shiftL :: CNfds -> Int -> CNfds Источник unsafeShiftL :: CNfds -> Int -> CNfds Источник shiftR :: CNfds -> Int -> CNfds Источник unsafeShiftR :: CNfds -> Int -> CNfds Источник rotateL :: CNfds -> Int -> CNfds Источник | |
| Bits CNlink Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: COff -> COff -> COff Источник (.|.) :: COff -> COff -> COff Источник xor :: COff -> COff -> COff Источник complement :: COff -> COff Источник shift :: COff -> Int -> COff Источник rotate :: COff -> Int -> COff Источник setBit :: COff -> Int -> COff Источник clearBit :: COff -> Int -> COff Источник complementBit :: COff -> Int -> COff Источник testBit :: COff -> Int -> Bool Источник bitSizeMaybe :: COff -> Maybe Int Источник bitSize :: COff -> Int Источник isSigned :: COff -> Bool Источник shiftL :: COff -> Int -> COff Источник unsafeShiftL :: COff -> Int -> COff Источник shiftR :: COff -> Int -> COff Источник unsafeShiftR :: COff -> Int -> COff Источник rotateL :: COff -> Int -> COff Источник | |
| Bits CPid Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CPid -> CPid -> CPid Исходный код (.|.) :: CPid -> CPid -> CPid Исходный код xor :: CPid -> CPid -> CPid Исходный код complement :: CPid -> CPid Исходный код shift :: CPid -> Int -> CPid Исходный код rotate :: CPid -> Int -> CPid Исходный код bit :: Int -> CPid Исходный код setBit :: CPid -> Int -> CPid Исходный код clearBit :: CPid -> Int -> CPid Исходный код complementBit :: CPid -> Int -> CPid Исходный код testBit :: CPid -> Int -> Bool Исходный код bitSizeMaybe :: CPid -> Maybe Int Исходный код bitSize :: CPid -> Int Исходный код isSigned :: CPid -> Bool Исходный код shiftL :: CPid -> Int -> CPid Исходный код unsafeShiftL :: CPid -> Int -> CPid Исходный код shiftR :: CPid -> Int -> CPid Исходный код unsafeShiftR :: CPid -> Int -> CPid Исходный код rotateL :: CPid -> Int -> CPid Исходный код rotateR :: CPid -> Int -> CPid Исходный код popCount :: CPid -> Int Исходный код | |
| Bits CRLim Исходный код | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CSsize -> CSsize -> CSsize Источник (.|.) :: CSsize -> CSsize -> CSsize Источник xor :: CSsize -> CSsize -> CSsize Источник complement :: CSsize -> CSsize Источник shift :: CSsize -> Int -> CSsize Источник rotate :: CSsize -> Int -> CSsize Источник setBit :: CSsize -> Int -> CSsize Источник clearBit :: CSsize -> Int -> CSsize Источник complementBit :: CSsize -> Int -> CSsize Источник testBit :: CSsize -> Int -> Bool Источник bitSizeMaybe :: CSsize -> Maybe Int Источник bitSize :: CSsize -> Int Источник isSigned :: CSsize -> Bool Источник shiftL :: CSsize -> Int -> CSsize Источник unsafeShiftL :: CSsize -> Int -> CSsize Источник shiftR :: CSsize -> Int -> CSsize Источник unsafeShiftR :: CSsize -> Int -> CSsize Источник rotateL :: CSsize -> Int -> CSsize Источник | |
| Bits CTcflag Источник | |
Определено в 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 Источник 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 Источник unsafeShiftR :: CTcflag -> Int -> CTcflag Источник rotateL :: CTcflag -> Int -> CTcflag Источник | |
| Bits CUid Источник | |
Определено в GHC.Internal.System.Posix.Types Методы(.&.) :: CUid -> CUid -> CUid Источник (.|.) :: CUid -> CUid -> CUid Источник xor :: CUid -> CUid -> CUid Источник complement :: CUid -> CUid Источник shift :: CUid -> Int -> CUid Источник rotate :: CUid -> Int -> CUid Источник setBit :: CUid -> Int -> CUid Источник clearBit :: CUid -> Int -> CUid Источник complementBit :: CUid -> Int -> CUid Источник testBit :: CUid -> Int -> Bool Источник bitSizeMaybe :: CUid -> Maybe Int Источник bitSize :: CUid -> Int Источник isSigned :: CUid -> Bool Источник shiftL :: CUid -> Int -> CUid Источник unsafeShiftL :: CUid -> Int -> CUid Источник shiftR :: CUid -> Int -> CUid Источник unsafeShiftR :: CUid -> Int -> CUid Источник rotateL :: CUid -> Int -> CUid Источник | |
| Bits Fd Источник | |
Определено в 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 Источник setBit :: Fd -> Int -> Fd Источник clearBit :: Fd -> Int -> Fd Источник complementBit :: Fd -> Int -> Fd Источник testBit :: Fd -> Int -> Bool Источник bitSizeMaybe :: Fd -> Maybe Int Источник isSigned :: Fd -> Bool Источник shiftL :: Fd -> Int -> Fd Источник unsafeShiftL :: Fd -> Int -> Fd Источник shiftR :: Fd -> Int -> Fd Источник unsafeShiftR :: Fd -> Int -> Fd Источник rotateL :: Fd -> Int -> Fd Источник | |
| Bits Word16 Источник | Начиная с: base-2.1 |
Определено в GHC.Internal.Word Методы(.&.) :: Word64 -> Word64 -> Word64 Источник (.|.) :: Word64 -> Word64 -> Word64 Источник xor :: Word64 -> Word64 -> Word64 Источник complement :: Word64 -> Word64 Источник shift :: Word64 -> Int -> Word64 Источник rotate :: Word64 -> Int -> Word64 Источник setBit :: Word64 -> Int -> Word64 Источник clearBit :: Word64 -> Int -> Word64 Источник complementBit :: Word64 -> Int -> Word64 Источник testBit :: Word64 -> Int -> Bool Источник bitSizeMaybe :: Word64 -> Maybe Int Источник bitSize :: Word64 -> Int Источник isSigned :: Word64 -> Bool Источник shiftL :: Word64 -> Int -> Word64 Источник unsafeShiftL :: Word64 -> Int -> Word64 Источник shiftR :: Word64 -> Int -> Word64 Источник unsafeShiftR :: Word64 -> Int -> Word64 Источник rotateL :: Word64 -> Int -> Word64 Источник | |
| Bits Word8 Источник | Since: base-2.1 |
Определено в GHC.Internal.Word Методы(.&.) :: Word8 -> Word8 -> Word8 Источник (.|.) :: Word8 -> Word8 -> Word8 Источник xor :: Word8 -> Word8 -> Word8 Источник complement :: Word8 -> Word8 Источник shift :: Word8 -> Int -> Word8 Источник rotate :: Word8 -> Int -> Word8 Источник setBit :: Word8 -> Int -> Word8 Источник clearBit :: Word8 -> Int -> Word8 Источник complementBit :: Word8 -> Int -> Word8 Источник testBit :: Word8 -> Int -> Bool Источник bitSizeMaybe :: Word8 -> Maybe Int Источник bitSize :: Word8 -> Int Источник isSigned :: Word8 -> Bool Источник shiftL :: Word8 -> Int -> Word8 Источник unsafeShiftL :: Word8 -> Int -> Word8 Источник shiftR :: Word8 -> Int -> Word8 Источник unsafeShiftR :: Word8 -> Int -> Word8 Источник rotateL :: Word8 -> Int -> Word8 Источник | |
| Bits Integer Источник | Начиная с: 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 Источник 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 Источник | |
| Bits a => Bits (And a) Источник | С версии: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(.&.) :: Ior a -> Ior a -> Ior a Источник (.|.) :: Ior a -> Ior a -> Ior a Источник xor :: Ior a -> Ior a -> Ior a Источник complement :: Ior a -> Ior a Источник shift :: Ior a -> Int -> Ior a Источник rotate :: Ior a -> Int -> Ior a Источник setBit :: Ior a -> Int -> Ior a Источник clearBit :: Ior a -> Int -> Ior a Источник complementBit :: Ior a -> Int -> Ior a Источник testBit :: Ior a -> Int -> Bool Источник bitSizeMaybe :: Ior a -> Maybe Int Источник bitSize :: Ior a -> Int Источник isSigned :: Ior a -> Bool Источник shiftL :: Ior a -> Int -> Ior a Источник unsafeShiftL :: Ior a -> Int -> Ior a Источник shiftR :: Ior a -> Int -> Ior a Источник unsafeShiftR :: Ior a -> Int -> Ior a Источник rotateL :: Ior a -> Int -> Ior a Источник | |
| Bits a => Bits (Xor a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(.&.) :: Xor a -> Xor a -> Xor a Источник (.|.) :: Xor a -> Xor a -> Xor a Источник xor :: Xor a -> Xor a -> Xor a Источник complement :: Xor a -> Xor a Источник shift :: Xor a -> Int -> Xor a Источник rotate :: Xor a -> Int -> Xor a Источник setBit :: Xor a -> Int -> Xor a Источник clearBit :: Xor a -> Int -> Xor a Источник complementBit :: Xor a -> Int -> Xor a Источник testBit :: Xor a -> Int -> Bool Источник bitSizeMaybe :: Xor a -> Maybe Int Источник bitSize :: Xor a -> Int Источник isSigned :: Xor a -> Bool Источник shiftL :: Xor a -> Int -> Xor a Источник unsafeShiftL :: Xor a -> Int -> Xor a Источник shiftR :: Xor a -> Int -> Xor a Источник unsafeShiftR :: Xor a -> Int -> Xor a Источник rotateL :: Xor a -> Int -> Xor a Источник | |
| Bits a => Bits (Identity a) Источник | С версии: base-4.9.0.0 |
Определён в GHC.Internal.Data.Ord Методы(.&.) :: Down a -> Down a -> Down a Источник (.|.) :: Down a -> Down a -> Down a Источник xor :: Down a -> Down a -> Down a Источник complement :: Down a -> Down a Источник shift :: Down a -> Int -> Down a Источник rotate :: Down a -> Int -> Down a Источник setBit :: Down a -> Int -> Down a Источник clearBit :: Down a -> Int -> Down a Источник complementBit :: Down a -> Int -> Down a Источник testBit :: Down a -> Int -> Bool Источник bitSizeMaybe :: Down a -> Maybe Int Источник bitSize :: Down a -> Int Источник isSigned :: Down a -> Bool Источник shiftL :: Down a -> Int -> Down a Источник unsafeShiftL :: Down a -> Int -> Down a Источник shiftR :: Down a -> Int -> Down a Источник unsafeShiftR :: Down a -> Int -> Down a Источник rotateL :: Down a -> Int -> Down a Источник | |
| Bits a => Bits (Const a b) Источник | Since: base-4.9.0.0 |
class Bits b => FiniteBits b where Исходный код
Класс FiniteBits обозначает типы с конечным фиксированным числом битов.
Начиная с: base-4.7.0.0
Минимальное полное определение
Методы
finiteBitSize :: b -> Int Исходный код
Возвращает количество битов в типе аргумента. Фактическое значение аргумента игнорируется. Кроме того, finiteBitSize является тотальной функцией, в отличие от устаревшей функции bitSize, которую она заменяет.
finiteBitSize = bitSize bitSizeMaybe = Just . finiteBitSize
Начиная с: base-4.7.0.0
countLeadingZeros :: b -> Int Исходный код
Подсчитывает количество нулевых битов перед старшим установленным битом.
countLeadingZeros (zeroBits :: a) = finiteBitSize (zeroBits :: a)
countLeadingZeros можно использовать для вычисления логарифма по основанию 2 следующим образом:
logBase2 x = finiteBitSize x - 1 - countLeadingZeros x
Примечание: реализация этого метода по умолчанию намеренно сделана наивной. Однако экземпляры для примитивных целочисленных типов реализованы с использованием специфичных для процессора машинных инструкций.
Начиная с: base-4.8.0.0
countTrailingZeros :: b -> Int Исходный код
Подсчитывает количество нулевых битов после младшего установленного бита.
countTrailingZeros (zeroBits :: a) = finiteBitSize (zeroBits :: a) countTrailingZeros . negate = countTrailingZeros
Связанную с этим операцию поиска первого установленного бита можно выразить через countTrailingZeros следующим образом:
findFirstSet x = 1 + countTrailingZeros x
Примечание: реализация этого метода по умолчанию намеренно сделана наивной. Однако экземпляры для примитивных целочисленных типов реализованы с использованием специфичных для процессора машинных инструкций.
Начиная с: base-4.8.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 | |
| FiniteBits CFsBlkCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CFsBlkCnt -> Int Исходный код | |
| FiniteBits CFsFilCnt Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CFsFilCnt -> Int Исходный код | |
| FiniteBits CGid Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
| FiniteBits CId Исходный код | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CId -> Int Исходный код countLeadingZeros :: CId -> Int Исходный код countTrailingZeros :: CId -> Int Исходный код | |
| FiniteBits CIno Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
| FiniteBits CKey Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
| FiniteBits CMode Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
| FiniteBits CNfds Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
Определено в GHC.Internal.System.Posix.Types МетодыfiniteBitSize :: CTcflag -> Int Исходный код | |
| FiniteBits CUid Исходный код | |
Определено в GHC.Internal.System.Posix.Types | |
| 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 | |
| FiniteBits Word32 Исходный код | Начиная с: base-4.6.0.0 |
Определено в GHC.Internal.Word | |
| 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 | |
Определён в GHC.Internal.Data.Functor.Const МетодыfiniteBitSize :: Const a b -> Int Исходный код countLeadingZeros :: Const a b -> Int Исходный код countTrailingZeros :: Const a b -> Int Исходный код |
Дополнительные функции
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 Исходный код
Реализация по умолчанию для testBit.
Обратите внимание: testBitDefault x i = (x .&. bit i) /= 0
С версии: base-4.6.0.0
popCountDefault :: (Bits a, Num a) => a -> Int Исходный код
Реализация по умолчанию для popCount.
Эта реализация намеренно наивна. Предполагается, что экземпляры предоставляют оптимизированную реализацию для своего размера.
С версии: base-4.6.0.0
toIntegralSized :: (Integral a, Integral b, Bits a, Bits b) => a -> Maybe b Исходный код
Попытка преобразовать тип 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 Исходный код
Более краткий вариант 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 Исходный код
Инфиксная версия xor.
С версии: base-4.17
(.>>.) :: Bits a => a -> Int -> a infixl 8 Исходный код
Инфиксная версия shiftR.
С версии: base-4.17
(.<<.) :: Bits a => a -> Int -> a infixl 8 Исходный код
Инфиксная версия shiftL.
С версии: base-4.17
(!>>.) :: Bits a => a -> Int -> a infixl 8 Исходный код
Инфиксная версия unsafeShiftR.
С версии: base-4.17
(!<<.) :: Bits a => a -> Int -> a infixl 8 Исходный код
Инфиксная версия unsafeShiftL.
С версии: base-4.17
Новые типы
newtype And a Исходный код
Моноид относительно побитового И.
>>> getAnd (And 0xab <> And 0x12) :: Word8 2
С версии: base-4.16
Экземпляры
| FiniteBits a => Monoid (And a) Источник |
Это ограничение, возможно, слишком строгое. Однако, поскольку для некоторых типов (например, Начиная с: base-4.16 |
| Bits a => Semigroup (And a) Источник | Начиная с: base-4.16 |
| Bits a => Bits (And a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(.&.) :: And a -> And a -> And a Источник (.|.) :: And a -> And a -> And a Источник xor :: And a -> And a -> And a Источник complement :: And a -> And a Источник shift :: And a -> Int -> And a Источник rotate :: And a -> Int -> And a Источник setBit :: And a -> Int -> And a Источник clearBit :: And a -> Int -> And a Источник complementBit :: And a -> Int -> And a Источник testBit :: And a -> Int -> Bool Источник bitSizeMaybe :: And a -> Maybe Int Источник bitSize :: And a -> Int Источник isSigned :: And a -> Bool Источник shiftL :: And a -> Int -> And a Источник unsafeShiftL :: And a -> Int -> And a Источник shiftR :: And a -> Int -> And a Источник unsafeShiftR :: And a -> Int -> And a Источник rotateL :: And a -> Int -> And a Источник | |
| FiniteBits a => FiniteBits (And a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits МетодыfiniteBitSize :: And a -> Int Источник countLeadingZeros :: And a -> Int Источник countTrailingZeros :: And a -> Int Источник | |
| Eq a => Eq (And a) Источник | Начиная с: base-4.16 |
newtype Ior a Исходный код
Моноид относительно побитового включающего ИЛИ.
>>> getIor (Ior 0xab <> Ior 0x12) :: Word8 187
Начиная с: base-4.16
Экземпляры
| Bounded a => Bounded (Ior a) Источник | Начиная с: base-4.16 |
| Enum a => Enum (Ior a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits Методыsucc :: Ior a -> Ior a Источник pred :: Ior a -> Ior a Источник toEnum :: Int -> Ior a Источник fromEnum :: Ior a -> Int Источник enumFrom :: Ior a -> [Ior a] Источник enumFromThen :: Ior a -> Ior a -> [Ior a] Источник enumFromTo :: Ior a -> Ior a -> [Ior a] Источник enumFromThenTo :: Ior a -> Ior a -> Ior a -> [Ior a] Источник | |
| Read a => Read (Ior a) Источник | Начиная с: base-4.16 |
| Show a => Show (Ior a) Источник | Начиная с: base-4.16 |
Моноид относительно побитового XOR.
>>> getXor (Xor 0xab <> Xor 0x12) :: Word8 185
Начиная с: base-4.16
Экземпляры
newtype Iff a Исходный код
Моноид относительно побитового «равенства»; определяется как 1, если соответствующие биты совпадают, и 0 в противном случае.
>>> getIff (Iff 0xab <> Iff 0x12) :: Word8 70
Начиная с: base-4.16
Экземпляры
| FiniteBits a => Monoid (Iff a) Источник |
Это ограничение, возможно, слишком строгое. Однако, поскольку для некоторых типов (например, Начиная с: base-4.16 |
| FiniteBits a => Semigroup (Iff a) Источник |
Это ограничение, возможно, слишком строгое. Однако, поскольку для некоторых типов (например, Начиная с: base-4.16 |
| Bits a => Bits (Iff a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits Методы(.&.) :: Iff a -> Iff a -> Iff a Источник (.|.) :: Iff a -> Iff a -> Iff a Источник xor :: Iff a -> Iff a -> Iff a Источник complement :: Iff a -> Iff a Источник shift :: Iff a -> Int -> Iff a Источник rotate :: Iff a -> Int -> Iff a Источник setBit :: Iff a -> Int -> Iff a Источник clearBit :: Iff a -> Int -> Iff a Источник complementBit :: Iff a -> Int -> Iff a Источник testBit :: Iff a -> Int -> Bool Источник bitSizeMaybe :: Iff a -> Maybe Int Источник bitSize :: Iff a -> Int Источник isSigned :: Iff a -> Bool Источник shiftL :: Iff a -> Int -> Iff a Источник unsafeShiftL :: Iff a -> Int -> Iff a Источник shiftR :: Iff a -> Int -> Iff a Источник unsafeShiftR :: Iff a -> Int -> Iff a Источник rotateL :: Iff a -> Int -> Iff a Источник | |
| FiniteBits a => FiniteBits (Iff a) Источник | Начиная с: base-4.16 |
Определено в GHC.Internal.Data.Bits МетодыfiniteBitSize :: Iff a -> Int Источник countLeadingZeros :: Iff a -> Int Источник countTrailingZeros :: Iff a -> Int Источник | |
| Eq a => Eq (Iff a) Источник | Начиная с: base-4.16 |
| Bounded a => Bounded (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 |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/Data-Bits.html