首页 > 其他 > 详细

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

时间:2017-09-27 12:49:48      阅读:300      评论:0      收藏:0      [点我收藏+]

题目描述

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

技术分享

 

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

原文:http://www.cnblogs.com/sjhome/p/7601052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!