LFJ Developer Docs
  • Liquidity Book
  • Introduction
  • LB V2.2 Key Changes
  • Guides
    • Swap Tokens
    • Add/Remove Liquidity
    • Tracking Volume
    • Tracking Pool Balances
    • Finding The Best Quote
    • Byte32 Decoding
    • Price From Bin Id
    • Bin Id From Price
    • Finding Liquidity Depth
    • User Balances
  • Concepts
    • Concentrated Liquidity
    • Bin Math
    • Bin Liquidity
    • Swaps
    • Fees
    • Oracle
  • Contracts
    • Interfaces
      • ILBLegacyFactory
      • ILBLegacyToken
      • ILBLegacyPair
      • ILBLegacyRouter
      • ILBFlashLoanCallback
      • IPendingOwnable
      • IJoeFactory
      • IJoePair
      • IJoeRouter01
      • IJoeRouter02
      • IWNATIVE
      • ILBFactory
      • ILBHooks
      • ILBPair
      • ILBRouter
      • ILBToken
    • Libraries
      • Math
        • BitMath
        • Encoded
        • LiquidityConfigurations
        • PackedUint128Math
        • SafeCast
        • SampleMath
        • TreeMath
        • Uint128x128Math
        • Uint256x256Math
      • BinHelper
      • Clone
      • Constants
      • FeeHelper
      • Hooks
      • ImmutableClone
      • JoeLibrary
      • OracleHelper
      • PairParameterHelper
      • PriceHelper
      • ReentrancyGuardUpgradeable
      • TokenHelper
    • LBBaseHooks
    • LBFactory
    • LBPair
    • LBQuoter
    • LBRouter
    • LBToken
  • Deployment Addresses
    • Avalanche C-Chain
    • Fuji Testnet
    • Arbitrum One
    • Binance Smart Chain
    • Binance Smart Chain Testnet
    • Ethereum Mainnet
    • Monad Testnet
  • SDK
    • Introduction
    • Making a Trade
    • Adding Liquidity
    • Removing Liquidity
  • Audits
  • AMM
    • Joe V1 Contracts
    • Joe V1 Audits
  • LFJ DEX API
    • Dex Analytics
    • Pools
    • Rewards
    • User
    • User Lifetime Stats
    • Vaults
    • Models
  • LFJ Aggregator API
    • Default
    • Models
Powered by GitBook
On this page
  • Functions
  • closestBitRight
  • closestBitLeft
  • mostSignificantBit
  • leastSignificantBit
  1. Contracts
  2. Libraries
  3. Math

BitMath

PreviousMathNextEncoded

Last updated 8 days ago

Helper contract used for bit calculations

Functions

closestBitRight

Returns the index of the closest bit on the right of x that is non null

function closestBitRight(uint256 x, uint8 bit) internal pure returns (uint256 id);

Parameters

Name
Type
Description

x

uint256

The value as a uint256

bit

uint8

The index of the bit to start searching at

Returns

Name
Type
Description

id

uint256

The index of the closest non null bit on the right of x. If there is no closest bit, it returns max(uint256)

closestBitLeft

Returns the index of the closest bit on the left of x that is non null

function closestBitLeft(uint256 x, uint8 bit) internal pure returns (uint256 id);

Parameters

Name
Type
Description

x

uint256

The value as a uint256

bit

uint8

The index of the bit to start searching at

Returns

Name
Type
Description

id

uint256

The index of the closest non null bit on the left of x. If there is no closest bit, it returns max(uint256)

mostSignificantBit

Returns the index of the most significant bit of x This function returns 0 if x is 0

function mostSignificantBit(uint256 x) internal pure returns (uint8 msb);

Parameters

Name
Type
Description

x

uint256

The value as a uint256

Returns

Name
Type
Description

msb

uint8

The index of the most significant bit of x

leastSignificantBit

Returns the index of the least significant bit of x This function returns 255 if x is 0

function leastSignificantBit(uint256 x) internal pure returns (uint8 lsb);

Parameters

Name
Type
Description

x

uint256

The value as a uint256

Returns

Name
Type
Description

lsb

uint8

The index of the least significant bit of x

Git Source