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 {
99
1010namespace internal {
1111
12+ // @return same with std::bit::bit_ceil
1213unsigned int bit_ceil (unsigned int n) {
1314 unsigned int x = 1 ;
1415 while (x < (unsigned int )(n)) x *= 2 ;
1516 return x;
1617}
1718
1819// @param n `1 <= n`
19- // @return minimum non-negative `x` s.t. `(n & (1 << x)) != 0`
20+ // @return same with std::bit::countr_zero
2021int countr_zero (unsigned int n) {
2122#ifdef _MSC_VER
2223 unsigned long index;
@@ -28,7 +29,7 @@ int countr_zero(unsigned int n) {
2829}
2930
3031// @param n `1 <= n`
31- // @return minimum non-negative `x` s.t. `(n & (1 << x)) != 0`
32+ // @return same with std::bit::countr_zero
3233constexpr int countr_zero_constexpr (unsigned int n) {
3334 int x = 0 ;
3435 while (!(n & (1 << x))) x++;
Original file line number Diff line number Diff line change @@ -19,9 +19,10 @@ TEST(BitTest, BitCeil) {
1919 ASSERT_EQ (8 , internal::bit_ceil (7U ));
2020 ASSERT_EQ (8 , internal::bit_ceil (8U ));
2121 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 ));
2526}
2627
2728TEST (BitTest, CountrZero) {
You can’t perform that action at this time.
0 commit comments