# toSigned abstract method

- int width

Returns the least significant `width`

bits of this integer, extending the
highest retained bit to the sign. This is the same as truncating the value
to fit in `width`

bits using an signed 2-s complement representation. The
returned value has the same bit value in all positions higher than `width`

.

```
var big15 = BigInt.from(15);
var big16 = BigInt.from(16);
var big239 = BigInt.from(239);
// V--sign bit-V
big16.toSigned(5) == -big16; // 00010000 -> 11110000
big239.toSigned(5) == big15; // 11101111 -> 00001111
// ^ ^
```

This operation can be used to simulate arithmetic from low level languages. For example, to increment an 8 bit signed quantity:

```
q = (q + 1).toSigned(8);
```

`q`

will count from `0`

up to `127`

, wrap to `-128`

and count back up to
`127`

.

If the input value fits in `width`

bits without truncation, the result is
the same as the input. The minimum width needed to avoid truncation of `x`

is `x.bitLength + 1`

, i.e.

```
x == x.toSigned(x.bitLength + 1);
```

## Implementation

`BigInt toSigned(int width);`