Spec-Zone.ru › Dart 2

dart:core

Метод toSigned

int toSigned(
  1. int width
)

Возвращает наименее значимые width биты этого целого числа, расширяя самый старший сохранённый бит до знака. Это эквивалентно усечению значения для размещения в width битах с использованием представления со знаком в дополнительном коде 2. Возвращаемое значение имеет такое же значение бита во всех позициях выше 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);

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/int/toSigned.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API