class BitUtility { | |
static bool isPowerOf2(int x) => (x & (x - 1)) == 0; | |
static int rotateRight(int value, int shift) => | |
(value >> shift) | (value << (32 - shift)); | |
static const List<int> BITSCALE_5_TO_8 = const [ | |
0, | |
8, | |
16, | |
24, | |
32, | |
41, | |
49, | |
57, | |
65, | |
74, | |
82, | |
90, | |
98, | |
106, | |
115, | |
123, | |
131, | |
139, | |
148, | |
156, | |
164, | |
172, | |
180, | |
189, | |
197, | |
205, | |
213, | |
222, | |
230, | |
238, | |
246, | |
255 | |
]; | |
static const List<int> BITSCALE_4_TO_8 = const [ | |
0, | |
17, | |
34, | |
51, | |
68, | |
85, | |
102, | |
119, | |
136, | |
153, | |
170, | |
187, | |
204, | |
221, | |
238, | |
255 | |
]; | |
static const List<int> BITSCALE_3_TO_8 = const [ | |
0, | |
36, | |
72, | |
109, | |
145, | |
182, | |
218, | |
255 | |
]; | |
static const List<int> BITSCALE_8_TO_5_FLOOR = const [ | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
31 | |
]; | |
static const List<int> BITSCALE_8_TO_4_FLOOR = const [ | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
15 | |
]; | |
static const List<int> BITSCALE_8_TO_3_FLOOR = const [ | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7 | |
]; | |
static const List<int> BITSCALE_8_TO_5_CEIL = const [ | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
16, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
17, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
18, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
19, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
20, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
21, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
22, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
23, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
24, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
25, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
26, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
27, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
28, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
29, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
30, | |
31, | |
31, | |
31, | |
31, | |
31, | |
31, | |
31, | |
31, | |
31 | |
]; | |
static const List<int> BITSCALE_8_TO_4_CEIL = const [ | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
8, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
9, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
10, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
11, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
12, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
13, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
14, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15, | |
15 | |
]; | |
static const List<int> BITSCALE_8_TO_3_CEIL = const [ | |
0, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
1, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
2, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
3, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
4, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
5, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
6, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7, | |
7 | |
]; | |
} |