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

二进制中1的个数

时间:2019-07-04 11:04:00      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:说明   col   大小   sel   coding   死循环   二进制   elf   输入   

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

说明:

首先所有正数和负数在计算机中都是以补码的形式存在的,所以不用考虑转换成补码,只要你把正数、负数的二进制能写出来就可以了,计算机后台会自动转换成补码计算的!

python

python二进制:

python二进制显示的时候前面会有个0b,负数的话是-0b

n>0 : bin(n)

n<0 : 

python中输的大小是可以无限扩大的,不会存在溢出,如果一个数超过了32位,那么会自动扩大。

n<0时,负数的二进制其实是:1111111.......11111(接下来是32位的二进制);正数是(0000......000(接下来是32位二进制))。

所以 n=n&0xffffffff意思是 111...(32位二进制) & 000....(ffffffff),相当于把后32位留下来了,前面就都是0,这样不会陷入死循环。

方法一:

1 return bin(n).count(1) if n >= 0 else bin(2**32 + n).count(1)

方法二

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def NumberOf1(self, n):
 4         # write code here
 5         count = 0
 6         if n<0:
 7             n = n&0xffffffff
 8         while n:
 9             count +=1
10             n = n & (n-1)
11         return count

 

c++

 1 class Solution {
 2 public:
 3      int  NumberOf1(int n) {
 4          int count=0;
 5          while(n!=0){
 6              count++;
 7              n = n & (n-1);
 8          }
 9          return count;
10      }
11 };

 

二进制中1的个数

标签:说明   col   大小   sel   coding   死循环   二进制   elf   输入   

原文地址:https://www.cnblogs.com/pacino12134/p/11130965.html

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