C++ 中 N 中设置位和未设置位的数量的绝对差

2025年3月17日 | 阅读 3 分钟

在本文中,我们将通过一个示例讨论如何在C++中找到N中已设置和未设置位计数的绝对差值

任务涉及确定一个整数的已设置位(或值为1的位)和未设置位(或值为0的位)之间的绝对差值。我们必须首先确定整数二进制表示中已设置位和未设置位计数之间的绝对差值。让我们看一个以下示例的伪代码。

伪代码

程序

输出

Absolute difference between set and unset bit count in N in C++

说明

  • 在此示例中,absVal函数是一个提供给定数字绝对值的函数。如果该数字不为负,它返回该数字;如果为负,它返回该数字的反数。
  • 给定一个整数n作为输入,bitDiff函数计算已设置位和未设置位之间的绝对差值。
  • 初始化两个变量,setunSet,分别用于跟踪已设置位和未设置位的数量。此外,创建一个'x'变量并将其值设置为输入数字。
  • 使用while循环遍历x的每个位。循环继续直到x等于零。
  • 通过使用位运算符AND与1 (n & 1)来查找x的最低有效位 (LSB)
  • 如果该位已设置且LSB为1,则将set增加1。否则,将unSet增加1。
  • 将x右移1位,以便在下一次迭代中移动到下一部分。
  • 在循环之后,使用absVal函数获取setunSet之间的绝对差值。将结果放入res变量中。
  • 最后,打印原始数字以及计算出的位差。