description

# toSigned abstract method

int toSigned(

1. 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`.

                             //     V--sign bit-V
    16.toSigned(5) == -16;   //  00010000 -> 11110000
    239.toSigned(5) == 15;   //  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

    int toSigned(int width);