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

剑指offer第十一题:二进制中1的个数

时间:2019-12-27 12:02:55      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:amp   return   ret   个数   输入   一个   整数   color   掌握   

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

重点掌握原码和补码的转换!!!

解题思路:对于正数使用模2取余法实现;对于负数先让它和2147483647(即:int类型下最大正数)与运算再按照正数的计算方法,最后加上一位符号位即可

代码如下:

 1 public class Solution {
 2     public int NumberOf1(int n) {
 3         if(n==0){
 4             return 0;
 5         }else if(n>0){
 6             int count = 0;
 7             while(n!=0){
 8                 if(n%2==1)
 9                     count++;
10                 n = n / 2;
11             }
12             return count;
13         }else{
14             int count = 0;
15             n = n & 2147483647;
16             while(n!=0){
17                 if(n%2==1)
18                     count++;
19                 n = n / 2;
20             }
21             return count+1;
22         }
23 
24     }
25 }

??

剑指offer第十一题:二进制中1的个数

标签:amp   return   ret   个数   输入   一个   整数   color   掌握   

原文地址:https://www.cnblogs.com/haq123/p/12106251.html

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