gpt4 book ai didi

c++ - 旋转整数以获得最大尾随二进制零

转载 作者:行者123 更新时间:2023-11-30 03:44:59 26 4
gpt4 key购买 nike

给定 16 位数据,我需要(使用 C++11)找到最大化尾随零数的旋转。

例如(为清楚起见,使用 8 位),

10110001 -> 11011000 so rot=1
10000011 -> 11100000 so rot=2
etc.

显然,“暴力破解”它很容易。但我怀疑有一个优雅的解决方案。

最佳答案

我认为代码中的一切都很清楚。类推左移。你可以在 cpp.sh 上测试

#include <iostream>
#include <string>
#include <bitset>

const int count_bits = 8;

int num_right_rotation(std::string number)
{
int max = 0;
int rotation = 0;
std::bitset<count_bits> one (number);
for(int i=0; i<count_bits; i++)
{
int max_temp = 0;
for(int j=0; j<count_bits; j++)
{
if(!one[j]) max_temp++;
else break;
}

if(max_temp > max)
{
max = max_temp;
rotation = i;
}
one = (one>>1) | (one<<count_bits-1);
}
return rotation;
}

int main()
{
std::cout << num_right_rotation ("10110001") << std::endl;
std::cout << num_right_rotation ("10000011") << std::endl;

return 0;
}

关于c++ - 旋转整数以获得最大尾随二进制零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com