> For the complete documentation index, see [llms.txt](https://docs.dragonswap.app/dragonswap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dragonswap.app/dragonswap/resources/developer-resources/smart-contracts/dragonswapv2/core/libraries/bitmath.md).

# BitMath

This library provides functionality for computing bit properties of an unsigned integer

### Functions[​](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#functions) <a href="#functions" id="functions"></a>

#### mostSignificantBit[​](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#mostsignificantbit) <a href="#mostsignificantbit" id="mostsignificantbit"></a>

```solidity
  function mostSignificantBit(
    uint256 x
  ) internal pure returns (uint8 r)
```

Returns the index of the most significant bit of the number, where the least significant bit is at index 0 and the most significant bit is at index 255

The function satisfies the property: x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#parameters)

| Name | Type    | Description                                                                     |
| ---- | ------- | ------------------------------------------------------------------------------- |
| `x`  | uint256 | the value for which to compute the most significant bit, must be greater than 0 |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#return-values)

| Name | Type  | Description                           |
| ---- | ----- | ------------------------------------- |
| `r`  | uint8 | the index of the most significant bit |

#### leastSignificantBit[​](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#leastsignificantbit) <a href="#leastsignificantbit" id="leastsignificantbit"></a>

```solidity
  function leastSignificantBit(
    uint256 x
  ) internal pure returns (uint8 r)
```

Returns the index of the least significant bit of the number, where the least significant bit is at index 0 and the most significant bit is at index 255

The function satisfies the property: (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#parameters-1)

| Name | Type    | Description                                                                      |
| ---- | ------- | -------------------------------------------------------------------------------- |
| `x`  | uint256 | the value for which to compute the least significant bit, must be greater than 0 |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/libraries/BitMath#return-values-1)

| Name | Type  | Description                            |
| ---- | ----- | -------------------------------------- |
| `r`  | uint8 | the index of the least significant bit |
