剑指offer编程-二进制中1的个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer编程-二进制中1的个数相关的知识,希望对你有一定的参考价值。

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
1.数字在计算机中本身为2进制存储,则每次判断数字末尾是不是1(与1相与),若为1计数加一,然后把数字右移一位,不断重复,直至为零。----会造成死循环,考虑负数的情况,右移后左边位补充1。
**虽然右移操作和除2等价,但是除法运算的效率比移位运算低的多。
2.数字不移位,先用1和数字相与,判断最后一位,然后将1左移一位与数字相与,判断倒数第二位。直至左移后为0。----整型有多少位就需要左移多少次。
3.把整数减去1,再于原来的整数做与运算 《==》把该整数最右边的1变为0。 。 ==》  整数中有多少个1,就能进行多少次这样的操作。
技术分享

技术分享

 

以上是关于剑指offer编程-二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 精选剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

剑指 Offer 15. 二进制中1的个数

剑指offer--15二进制中1的个数

《剑指offer》 二进制中1的个数

剑指 Offer 15. 二进制中1的个数

Lc_剑指Offer15二进制中1的个数--------位运算