C语言 计算二进制中相邻对的数量



假设我得到了一个整数n,它是从用户那里读取的。

我想数一数 1 的相邻对数。

例如,假设我得到数字 31。

31 的二进制表示形式是 11111。

对数为 11 11 1 => 2 对

如何使用按位运算符执行此操作?

谢谢!

您必须使用((n&3)==3)条件验证整数,才能找到位位置 0 和 1 中的相邻对。如果找到 pair,我们向右移动 2,否则向右移动 1,直到我们没有检查所有 32 位。

unsigned int n = 31;  /* input */
unsigned char number_of_pairs = 0;  /* result */
unsigned char mask_position = 0;
do
{
if(((n >> mask_position) & 3) == 3)
{
number_of_pairs += 1;
mask_position += 2;
}
else
{ 
mask_position += 1;
}
} while(mask_position < 32);

相关内容

  • 没有找到相关文章

最新更新