File tree Expand file tree Collapse file tree 2 files changed +7
-5
lines changed Expand file tree Collapse file tree 2 files changed +7
-5
lines changed Original file line number Diff line number Diff line change @@ -9,14 +9,15 @@ namespace atcoder {
9
9
10
10
namespace internal {
11
11
12
+ // @return same with std::bit::bit_ceil
12
13
unsigned int bit_ceil (unsigned int n) {
13
14
unsigned int x = 1 ;
14
15
while (x < (unsigned int )(n)) x *= 2 ;
15
16
return x;
16
17
}
17
18
18
19
// @param n `1 <= n`
19
- // @return minimum non-negative `x` s.t. `(n & (1 << x)) != 0`
20
+ // @return same with std::bit::countr_zero
20
21
int countr_zero (unsigned int n) {
21
22
#ifdef _MSC_VER
22
23
unsigned long index;
@@ -28,7 +29,7 @@ int countr_zero(unsigned int n) {
28
29
}
29
30
30
31
// @param n `1 <= n`
31
- // @return minimum non-negative `x` s.t. `(n & (1 << x)) != 0`
32
+ // @return same with std::bit::countr_zero
32
33
constexpr int countr_zero_constexpr (unsigned int n) {
33
34
int x = 0 ;
34
35
while (!(n & (1 << x))) x++;
Original file line number Diff line number Diff line change @@ -19,9 +19,10 @@ TEST(BitTest, BitCeil) {
19
19
ASSERT_EQ (8 , internal::bit_ceil (7U ));
20
20
ASSERT_EQ (8 , internal::bit_ceil (8U ));
21
21
ASSERT_EQ (16 , internal::bit_ceil (9U ));
22
- ASSERT_EQ (1U <<30 , internal::bit_ceil (1U << 30 ));
23
- ASSERT_EQ (1U <<31 , internal::bit_ceil ((1U << 30 ) + 1 ));
24
- ASSERT_EQ (1U <<31 , internal::bit_ceil ((1U << 31 ) - 1 ));
22
+ ASSERT_EQ (1U << 30 , internal::bit_ceil (1U << 30 ));
23
+ ASSERT_EQ (1U << 31 , internal::bit_ceil ((1U << 30 ) + 1 ));
24
+ ASSERT_EQ (1U << 31 , internal::bit_ceil ((1U << 31 ) - 1 ));
25
+ ASSERT_EQ (1U << 31 , internal::bit_ceil (1U << 31 ));
25
26
}
26
27
27
28
TEST (BitTest, CountrZero) {
You can’t perform that action at this time.
0 commit comments