求解c语言超范围整数的二进制数中0的个数的问题
#include<stdio.h>
#include<string.h>
int main(void){
int t,x,i,count=0;
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&x);
while(x){
if(!(x%2))
count++;
x/=2;
}
printf("%d\n",count);
}
return 0;
}
你的整数范围最大到10^18,所以不能用int,会溢出
改成 long long吧,scanf对应是 %lld
这段代码的目的是统计超范围整数的二进制数中0的个数。具体实现方法是使用scanf函数读取一个整数,然后使用while循环判断该整数的二进制表示中是否存在0。如果该二进制表示中不存在0,则将当前计数器加1。最后使用printf函数输出计数器的值即可。