свойство bitLength
Возвращает минимальное количество битов, необходимое для хранения этого большого целого числа.
Количество битов не включает знаковый бит, поэтому для неотрицательных (беззнаковых) значений оно соответствует естественной длине. Для отрицательных значений выполняется инверсия, чтобы вернуть позицию бита, отличающегося от знакового бита.
Чтобы найти количество битов, необходимое для хранения значения как знакового, прибавьте единицу, то есть используйте x.bitLength + 1.
x.bitLength == (-x-1).bitLength; BigInt.from(3).bitLength == 2; // 00000011 BigInt.from(2).bitLength == 2; // 00000010 BigInt.from(1).bitLength == 1; // 00000001 BigInt.from(0).bitLength == 0; // 00000000 BigInt.from(-1).bitLength == 0; // 11111111 BigInt.from(-2).bitLength == 1; // 11111110 BigInt.from(-3).bitLength == 2; // 11111101 BigInt.from(-4).bitLength == 2; // 11111100
Реализация
int get bitLength;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/BigInt/bitLength.html