二进制计数1,介于0和NULL之间
Count 1 in Binary,difference between 0 and NULL
问题是计算32位整数的二进制表示中有多少个1。我是用C++写的。
首先我有代码
int countOnes(int num) {
int count=0;
while(num>0){
count++;
num=num&num-1;
}
return count;
}
但它没有通过信息
输入-1(1111111111111111)输出0预期32
当我把代码改成这个
int countOnes(int num) {
int count=0;
while(num){ //difference here
count++;
num=num&num-1;
}
return count;
}
它被接受。那么,问题出在哪里呢?有人能帮我吗?
正如其他人所建议的,无符号与有符号可能会让你在这里感到困惑。
我这样做了,使用了一个模板参数,这样你就可以使用不同类型的数字:
template<typename Num>
unsigned int count_binary_1(const Num& number)
{
unsigned int result = 0;
unsigned int count = sizeof(number) * 8;
for (unsigned int i = 0; i < count; ++i)
{
if ((number >> i) & 1)
{
++result;
}
}
return result;
}
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在C++中NULL和__NULL之间有什么区别
- 删除指针并将指针设置为null之间有什么区别
- if(NULL==指针)和if(指针==NULL)之间有什么区别
- 比较中NULL和零之间的差异
- 二进制计数1,介于0和NULL之间
- 字符串对象和以 null 结尾的字符数组之间的差异
- 将C样式字符串初始化为NULL与空字符串之间的区别
- 2013和GCC之间的全局函数和不明确的参数NULL与char*
- c++中if(指针)与if(指针!=NULL)之间的差异,cpplint问题
- 以null结尾的字符(0)和“^@”之间的差异
- MySQL 在询问某些值和空值之间的差异时返回 null