剑指offer-二进制中1的个数
Posted DeaglePc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-二进制中1的个数相关的知识,希望对你有一定的参考价值。
注意负数转换成补码计算
我的方法比较奇葩,把负数的补码用正数表示,结果加1就是答案,因为负数的符号位是1
class Solution { public: int NumberOf1(int n) { int tmp = n < 0 ? ((~(-n) + 1) & 0x7fffffff) : n, res = 0; while(tmp){ res += tmp & 1; tmp >>= 1; } return n >= 0 ? res : res + 1; } };
以上是关于剑指offer-二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章