toSigned 抽象方法
- int width
返回这个整数最不稳定的 width 位,将最高保留位扩展到符号位。这与使用具有符号位 2 的补码表示法将值截断以适应 width 位相同。返回的值在最高 width 位的所有位置上具有相同的位值。
// V--sign bit-V
16.toSigned(5) == -16; // 00010000 -> 11110000
239.toSigned(5) == 15; // 11101111 -> 00001111
// ^ ^
此操作可以用于模拟来自底层语言的算术。例如,要增加一个 8 位带符号的数量
q = (q + 1).toSigned(8);
q 将从 0 计数到 127,回绕到 -128 并计数回到 127。
如果输入值可以适应 width 位而无需截断,则结果与输入相同。避免截断 x 所需要的最小宽度是 x.bitLength + 1,即
x == x.toSigned(x.bitLength + 1);
实现
int toSigned(int width);