C++ std::countr_zero

2025 年 2 月 11 日 | 阅读 4 分钟

在本文中,我们将讨论 C++ 中的 std::countr_zero 方法,并提供其语法和示例。

C++ 中的 std::countr_zero() 方法是什么?

这个 countr_zero 函数是在 C++20 中引入的。该函数存在于 <bit> 头文件中。此函数用于计算一个数的二进制表示中末尾的零的数量。这意味着该函数用于获取一个无符号整数中从最低有效位开始的连续零的数量。

语法

C++ 中 countr_zero 函数的语法。

参数

该函数将接收一个无符号整数类型的值作为输入,并返回一个整数值,表示给定数字中末尾零的数量。

返回值

如果输入为零,该函数将返回该整数类型的位数。

示例 1

输入:8

输出:3

说明

给定数字的二进制表示如下

00000000000000000000000000001000

现在,上述数字中末尾的零的数量是 3。

示例 2

输入:0

输出:32

说明

给定数字的二进制表示如下

00000000000000000000000000000000

现在,上述表示中末尾的零的数量是 32

程序 1

让我们看一个 C++ 程序来演示 std::countr_zero() 函数。

输出

std::countr_zero in C++

说明

上述程序演示了 countr_zero 函数的功能。首先,声明一个无符号整型变量,用于存储用户输入的数字。然后,显示提示信息,要求用户输入一个无符号整数值。使用 bitset 打印出给定数字的二进制表示,其宽度等于数字的位数。最后,使用 countr_zero 函数打印出末尾零的数量。

程序 2

让我们看一个 C++ 程序,使用 std::countr_zero() 函数获取给定数字中最低有效置位(set bit)的位置。

输出

std::countr_zero in C++

说明

上述函数是 countr_zero 函数的一个应用。该程序用于查找给定数字中最低有效置位的位置。此程序有两个主要函数,即 findLeastSignigicantSetBit 函数。在 main 函数中,声明一个无符号整型变量来存储用户输入。用户需要输入一个数字,以查询其最低有效位(LSB)。之后,使用 bitset 库打印出给定数字的二进制表示。然后,通过传递数字作为参数来调用 findLeastSignigicantSetBit。该函数将返回给定数字中最低有效位的位置。这里,使用 if else 语句来检查给定数字是否有置位。如果 findLeastSignigicantSetBit 函数返回的结果不等于 -1,则表示数字中有置位,并打印出该置位的位置。否则,打印一条消息,说明该数字没有置位。

findLeastSignigicantSetBit 函数接收一个无符号整数作为输入,并检查输入是否为零。如果为零,则返回 -1,表示给定数字中没有置位。此函数使用 countr_zero 函数。末尾零的数量存储在一个名为 "numTrailingZeros" 的变量中,用于查找最终位置。之后,将最终结果返回给 main 函数。

结论

总而言之,本文介绍了在 C++20 中引入的 countr_zero 函数。该函数用于获取给定无符号整数值的二进制表示中末尾零的数量。本文还提供了一个应用示例程序,该程序使用 countr_zero 函数来查找给定无符号整数值中最低有效置位的位置。