码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-27 13:08:30      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:计算机   分享   左移   移位   运算   需要   位运算   subject   二进制   

题目描述

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

技术分享

 

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

标签:计算机   分享   左移   移位   运算   需要   位运算   subject   二进制   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!