一.写一个函数返回参数二进制中1的个数
主要思路如下:
第一种方法
import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int count=0; for(int i=0;i<32;i++){ if(((n>>i)&1)==1){ count++; } } System.out.println("count: "+count); }}
运行结果如下:
这里顺便介绍一下断点调试:
1.鼠标放到要调试的地方,点击左键,出现断点
2.点击甲壳虫开始调试,并输入一个值
3.点击最左边的箭头,开始往下执行
4.输入n=15,一步一步往下执行,得到count=4
以上就是断点的使用方法,下面接着分析这道题目
第二种方法
import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int count=0; while(n!=0){ n=n&n-1; count++; } System.out.println("count: "+count); }}
运行结果如下:
二.获取一个二进制中所有偶数位和奇数位
方法和上面类似
import java.util.Scanner;public class TestDemo { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); for(int i=31;i>=1;i=i-2){ System.out.print(((n>>i)&1)+" "); } System.out.println(); for(int i=30;i>=0;i=i-2){ System.out.print(((n>>i)&1)+" "); } }}