|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2020-5-8 18:06 编辑
题目描述:
- 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
- 示例 1:
- 输入:00000000000000000000000000001011
- 输出:3
- 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
- 示例 2:
- 输入:00000000000000000000000010000000
- 输出:1
- 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
- 示例 3:
- 输入:11111111111111111111111111111101
- 输出:31
- 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
-  
- 来源:力扣(LeetCode)
- 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
- #include<iostream>
- using namespace std;
- int solution(std::uint32_t n){
- int res = 0;
- while(n){
- res++;
- n &= (n-1);
- }
- return res;
-
- }
- int main(void){
- std::int32_t input;
- cin >> input;
- int res = solution(input);
- cout << res << endl;
- return 0;
- }
复制代码
注意事项:
1.参考视频:https://www.bilibili.com/video/B ... 6173406003580465576
2.参考题解:https://leetcode-cn.com/problems ... 1de-ge-shu-wei-yun/
3.这里的代码在leetcode上可以通过,但在本人的本地DEV(C++2011标准)上运行后得不到正确结果,目前还没找到问题所在。同时在leecode上测试100的时候得到返回无,但也通过了,不知道为什么。
4.这里的unit32_t要用std::unit32_t形式(C++2011),目前还没搞懂为什么用unit32_t这种形式。
|
|