`integer`

`integer`

Dart's native integers in custom bitwidth integer format. There are getters for `int`

, to get the appropriate datatypes you need.

`i2`

, `i4`

, `i8`

, `i16`

, `i32`

and `i64`

are the standard signed integer datatypes and `u1`

, `u2`

, `u4`

, `u8`

, `u16`

, `u32`

, `u63`

are the standard unsigned integer datatypes exposed by this library. If you want to use a custom bit-width integer format, you can use the `ix`

and `ux`

datatypes.

All operations and functions can be seamlessly used with other `integer`

types, and native `int`

, `double`

datatypes. Remember that all integer datatypes provided do not actually allocate different bit-widths in memory. This is due to the limitation of Dart's VM.

```
/// Use the constructor
i32(32423445435)
/// or use getters
32423445435.i_32 // -1936292933
```

Remember to enclose negative integer literals like -34644 or -89 in parenthesis to tell Dart that the getters should be called for the entire literal. Like this

```
(-98723447).u_16 // 39305
```

### Operations

All operations are compatible with native `int`

and are also compatible with all signed and unsigned `integer`

datatypes.

```
u16 a = (-982342623).u_16;
print('Value of 16-bit unsigned integer a is $a');
print('Addition int: ${a + 862} double: ${a + 862.343}');
print('Subtraction int: ${a - 36} double: ${a - 36.909}');
print('Multiplication int: ${a * 6} double: ${a * 6.2345}');
print('Division int: ${a / 6} double: ${a / 6.2345}');
print('Euclidean Modulo int: ${a % 8} double: ${a % 8.923}');
```

Bitshift operations only support `integer`

and `int`

values

```
print('Left Shift: ${a << 3}');
print('Right Shift: ${a >> 9}');
print('Triple Shift: ${a >>> 5}');
```

If `double`

values are used in operations of `integer`

variables, the value is truncated after the operation.

### Custom Bit-Width

Provide a custom bit-width to convert the integer to that format using `ix`

and `ux`

datatypes

```
/// 22-bit Signed Integer
(-4567233343).iX(22) // 363713
/// 48-bit Unsigned Integer
(-4567233343).uX(48) // 281470409477313
```

## Libraries

- integer
`integer`

library allows you to use custom bit-width integers via getters and datatypes