1. 题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
2. 思路和方法
使用移位(<<)和 “| & !”操作来实现。1的二进制是:前面都是0,最后一位为1。每次向左移位一下,使得flag的二进制表示中始终只有一个位为1,每次与n做位与操作,这样就相当于逐个检测n的每一位是否是1。unsigned int flag = 1;
3. c++核心代码
3.1 位运算
1 class solution { 2 public: 3 int numberof1(int n) { 4 int result = 0; 5 unsigned int flag = 1; 6 while(flag) 7 { 8 if(n&flag) 9 result++; 10 flag = flag<<1; 11 } 12 return result; 13 } 14 };
参考资料
https://blog.csdn.net/qq_28632639/article/details/87966115
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/602179.html