c++/题解/代码:

二进制中1的个数

http://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8

C++题解:
1.有符号的数变为无符号的数,并不会改变其二进制的表达方式
2.有符号的3是00000......11变为无符号还是00000.......11
3.有符号的-3是原码100000......11,补码就是1111111....01,变为无符号后还是111111111.....01
4.无符号数,右移高位补0,有符号数,右移高位补1
C++代码:

class Solution {
public:
     int  NumberOf1(int n) {
         unsigned int m = n, res = 0; //将有符号整数变为无符号数
         while(m) res += m & 1,m >>= 1; //m&1表示m与1的各个位数相与,最后一位为1则加1,为0则加0
         return res;
     }
};
全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
算法冲刺中:kpi面加一,面完完全没动静,感谢信都没有
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务