重点是右移ptr而不是把n左移,为了避免左移负数的问题和
用不等于0来判断避免了繁琐!
import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class S10 { public static void main(String[] args) throws FileNotFoundException { BufferedInputStream in = new BufferedInputStream(new FileInputStream("S10.in")); System.setIn(in); Scanner cin = new Scanner(System.in); while (cin.hasNextInt()) { long n = cin.nextInt(); for(int i=0; i<n; i++){ System.out.println(get1s(cin.nextInt())); } } } public static int get1s(int n){ int cnt = 0; int ptr = 1; for(int i=0; i<32; i++){ // 重点是右移ptr而不是把n左移,为了避免左移负数的问题 if((n&(ptr<<i)) != 0){ // 用不等于0来判断避免了繁琐! cnt += 1; } } return cnt; } }
作者:hellobinfeng 发表于2013-12-17 1:25:24 原文链接
阅读:35 评论:0 查看评论