对于给定的 型的十进制正整数 ,统计其在内存中存储时 的个数。换句话说,即统计其二进制表示中 的个数。
在一行上输入一个整数 ,代表给定的数字。
在一行上输出一个整数,代表 的二进制表示中 的个数。
10
2
十进制 到 的二进制表示如下:
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 ;
十进制 等于二进制 。
0
0
import java.util.Scanner;
import java.util.Stack;
public class ShuZiDianDao {
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; }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int num = sc.nextInt(); String str = Integer.toBinaryString(num); str = str.replaceAll("0",""); System.out.println(str.length()); } sc.close(); } }使用java语言,将数字转为二进制字符串之后,一般是遍历字符串,统计1的个数,这里取巧,通过替换0为空字符,剩下的就是1,然后计算二进制字符串的长度。