错误:无效的操作数到二进制转换(位集<;8>;和int) 如何在C++中迭代二进制数?
在前面提到的函数中,我得到 无效的操作数到二进制转换(位集和int) 这是我的代码中的函数,它获取声明的错误错误:无效的操作数到二进制转换(位集<;8>;和int) 如何在C++中迭代二进制数?,c++,C++,在前面提到的函数中,我得到 无效的操作数到二进制转换(位集和int) 这是我的代码中的函数,它获取声明的错误 int value(int x) { int temp=0,counter=0; bitset<8> i(x); while (i != 0) { temp = i % 10; if(temp == 1) { counter++; } i = i/10; } retu
int value(int x)
{
int temp=0,counter=0;
bitset<8> i(x);
while (i != 0) {
temp = i % 10;
if(temp == 1) {
counter++;
}
i = i/10;
}
return counter;
}
int值(int x)
{
内部温度=0,计数器=0;
位集i(x);
而(i!=0){
温度=1%10;
如果(温度==1){
计数器++;
}
i=i/10;
}
返回计数器;
}
要计算x的前8位中的1个数:
int value(int x)
{
return bitset<8>(x).count();
}
int值(int x)
{
返回位集(x.count();
}
要计算所有位,请执行以下操作:
int value(int x)
{
return bitset<sizeof(x) * CHAR_BIT>(x).count();
}
int值(int x)
{
返回位集(x.count();
}
如果您必须使用循环解决方案:(使用可用功能适应您的解决方案)
int值(int x)
{
int计数器=0;
位集i(x);
而(i!=0){
如果(i[0]==1){
计数器++;
}
i>>=1;
}
返回计数器;
}
X是我需要的二进制值的数字,然后从该二进制数中我应该找到该数字所具有的1的数字。您实际上没有使用位集。您的代码正在尝试迭代十进制而非二进制的数字。如果您想计算位,您可以。请看@WhozCraig:sizeof(x)
给出x中的字符数,而不是位数。@Jarod42:只要转换没有溢出,就没有特定于实现的内容。你是对的,这更好,但在回答中我更喜欢使用OP的签名。嘿@Dani,我在我的程序中实现了你的代码,唯一的问题是所有二进制数中有1的数字,比如2,8,我得到的答案是垃圾值,比如143434。@SanjayJain:我测试了所有的变体,它们都工作正常。你能展示你的全部代码吗?是的,丹尼在这里#包括#包括使用名称空间标准;int值(int i);int main(){int t;cin>>t;而(t!=0){int n=0;cin>>n;int i=-1;int arr[n];for(int i=0;i>arr[i];}for(int j=0;j
int value(int x)
{
int counter=0;
bitset<8> i(x);
while (i != 0) {
if(i[0] == 1) {
counter++;
}
i >>= 1;
}
return counter;
}