Difference between revisions of "cpp/numeric/countr zero"
From cppreference.com
D41D8CD98F (Talk | contribs) (Created page with "{{cpp/title|countr_zero}} {{cpp/numeric/navbar}} {{dcl begin}} {{dcl header | bit}} {{dcl | since=c++20 | template<class T> constexpr int countr_zero(T x) noexcept; }} {{dcl e...") |
m (fmt) |
||
Line 1: | Line 1: | ||
{{cpp/title|countr_zero}} | {{cpp/title|countr_zero}} | ||
{{cpp/numeric/navbar}} | {{cpp/numeric/navbar}} | ||
− | {{ | + | {{ddcl | header=bit | since=c++20 | |
− | + | template< class T > | |
− | + | constexpr int countr_zero( T x ) noexcept; | |
− | template<class T> | + | |
− | constexpr int countr_zero(T x) noexcept; | + | |
}} | }} | ||
− | |||
Returns the number of consecutive 0 bits in the value of {{tt|x}}, starting from the least significant bit ("right"). | Returns the number of consecutive 0 bits in the value of {{tt|x}}, starting from the least significant bit ("right"). | ||
Line 27: | Line 24: | ||
#include <bitset> | #include <bitset> | ||
#include <cstdint> | #include <cstdint> | ||
− | |||
#include <iostream> | #include <iostream> | ||
int main() | int main() | ||
{ | { | ||
− | for (std::uint8_t i : { 0, 0b11111111, 0b00011100 }) { | + | for (const std::uint8_t i : { 0, 0b11111111, 0b00011100, 0b00011101 }) { |
− | std::cout << "countr_zero( | + | std::cout << "countr_zero( " << std::bitset<8>(i) << " ) = " |
<< std::countr_zero(i) << '\n'; | << std::countr_zero(i) << '\n'; | ||
} | } | ||
} | } | ||
|output= | |output= | ||
− | countr_zero( | + | countr_zero( 00000000 ) = 8 |
− | countr_zero( | + | countr_zero( 11111111 ) = 0 |
− | countr_zero( | + | countr_zero( 00011100 ) = 2 |
+ | countr_zero( 00011101 ) = 0 | ||
}} | }} | ||
Line 51: | Line 48: | ||
{{dsc end}} | {{dsc end}} | ||
− | {{langlinks|ja|zh}} | + | {{langlinks|es|ja|ru|zh}} |
Revision as of 11:27, 20 November 2021
Defined in header <bit>
|
||
template< class T > constexpr int countr_zero( T x ) noexcept; |
(since C++20) | |
Returns the number of consecutive 0 bits in the value of x
, starting from the least significant bit ("right").
This overload participates in overload resolution only if T
is an unsigned integer type (that is, unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, or an extended unsigned integer type).
Contents |
Parameters
x | - | values of unsigned integer type |
Return value
The number of consecutive 0 bits in the value of x
, starting from the least significant bit.
Example
Run this code
#include <bit> #include <bitset> #include <cstdint> #include <iostream> int main() { for (const std::uint8_t i : { 0, 0b11111111, 0b00011100, 0b00011101 }) { std::cout << "countr_zero( " << std::bitset<8>(i) << " ) = " << std::countr_zero(i) << '\n'; } }
Output:
countr_zero( 00000000 ) = 8 countr_zero( 11111111 ) = 0 countr_zero( 00011100 ) = 2 countr_zero( 00011101 ) = 0
See also
(C++20) |
counts the number of consecutive 0 bits, starting from the most significant bit (function template) |
(C++20) |
counts the number of consecutive 1 bits, starting from the most significant bit (function template) |
(C++20) |
counts the number of consecutive 1 bits, starting from the least significant bit (function template) |
(C++20) |
counts the number of 1 bits in an unsigned integer (function template) |