第一种移位最厉害
第二种负数还不通
第三种涉及两种char转int的方法
1 import java.util.Scanner; 2 public class 二进制操作 { 3 //way001 4 public static int Decimal2Binary(long n) { 5 int indexof1=0; 6 for(int i=31;i>=0;i--) { 7 long num=(n>>i&1); 8 //System.out.print(num); 9 if(num==1) 10 indexof1++; 11 } 12 //System.out.println(); 13 return indexof1; 14 } 15 //way002 16 public static void Decimal2Binary2(long n,int base) { 17 String string=""; 18 while(n!=0) { 19 string=n%base+string; 20 n/=base; 21 } 22 System.out.println(string); 23 } 24 //way003 25 public static int Decimal2Binary3(int n) { 26 int indexof1=0; 27 String string=Integer.toBinaryString(n); 28 for(int i=0;i<string.length();i++) { 29 //if(Integer.valueOf(String.valueOf(string.charAt(i)))==1) 30 if(string.charAt(i)-'0'==1) 31 indexof1++; 32 } 33 System.out.println(string); 34 return indexof1; 35 } 36 public static void main(String[] args) { 37 Scanner scanner=new Scanner(System.in); 38 while(scanner.hasNext()) { 39 int n=scanner.nextInt(); 40 System.out.println(Decimal2Binary(n)); 41 //System.out.println(Decimal2Binary3(n)); 42 } 43 } 44 }