| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// @assertion int bitLength |
| /// Returns the minimum number of bits required to store this integer. |
| /// The number of bits excludes the sign bit, which gives the natural length for |
| /// non-negative (unsigned) values. Negative values are complemented to return |
| /// the bit position of the first bit that differs from the sign bit. |
| /// To find the number of bits needed to store the value as a signed value, |
| /// add one, i.e. use x.bitLength + 1. |
| /// @description Checks that this method returns the minimum number of bits |
| /// required to store this integer |
| /// @author sgrekhov@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| |
| main() { |
| Expect.equals(0, 0.bitLength); // 00000000 |
| Expect.equals(1, 1.bitLength); // 00000001 |
| Expect.equals(2, 2.bitLength); // 00000010 |
| Expect.equals(2, 3.bitLength); // 00000011 |
| Expect.equals(3, 7.bitLength); // 00000111 |
| Expect.equals(4, 8.bitLength); // 00001000 |
| Expect.equals(5, 16.bitLength); // 00010000 |
| Expect.equals(8, 128.bitLength); // 10000000 |
| Expect.equals(8, 255.bitLength); // 11111111 |
| Expect.equals(9, 256.bitLength); |
| Expect.equals(17, 65536.bitLength); |
| Expect.equals(25, 16777216.bitLength); |
| |
| Expect.equals(0, (-1).bitLength); // 11111111 |
| Expect.equals(1, (-2).bitLength); // 11111110 |
| Expect.equals(2, (-3).bitLength); // 11111101 |
| Expect.equals(2, (-4).bitLength); // 11111100 |
| } |