输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
import java.util.Scanner;
import java.util.Stack;
public class ShuZiDianDao {
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int count = 0; //把向右移位得到的二进制与1操作 for (int i = 31; i >=0 ; i--) { if ((num>>>i&1) == 1){ count ++; } } System.out.println(count); } }
n = int(input()) a = bin(n) b = str(a) print(b.count('1'))
#include<iostream> using namespace std; //方法一 /*int main() { int n; cin>>n; int count=0; while(n) { if(n%2) count++; n/=2; } cout<<count<<endl; return 0; }*/ //方法二 int main() { int n; cin>>n; int count=0; while(n) { count++; n=n&(n-1); } cout<<count<<endl; return 0; }
num=int(raw_input("")) num=str(bin(num)) len1=len(num) count=0 for i in range(2,len1): if num[i]=='1': count+=1 print count 下面是C++实现的代码 #include<iostream>using namespace std; int main() { int num = 0; cin >> num; int count = 0; while (num) { count++; num = num&(num - 1); } cout << count << endl; system("pause"); return 0; }
#include<bits/stdc++.h> using namespace std; int main() { unsigned int data; cin >> data; int count = 0; int temp; while(data) { temp = data%2; data /= 2; if(temp == 1) count++; } cout << count << endl; return 0; }