package com.Test;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
int num;
Scanner in = new Scanner(System.in);
System.out.println("请输入一个整数:");
num = in.nextInt(); //接收一个整数
printOddEvenBinary(num); //调用输出一个整数的二进制序列中的奇偶位序列的方法
}
//输出一个整数的二进制序列中的奇偶位序列的方法
public static void printOddEvenBinary(int num){
int odd = 0;
int even = 0;
int len1 = 0;
int len2 = 0;
int count = 1;
//遍历num的每一个二进制位
for (int i = num; i != 0; i >>= 1){
if ((count & 1) == 1){ //若该二进制位为奇数位
odd |= (i & 1) << len1; //odd的值更新为i与1按位与左移len1位再与odd按位或
len1++;
}
else{ //若该二进制位为偶数位
even |= (i & 1) << len2;
len2++;
}
count++;
}
System.out.println("奇数序列:");
for (int i = len1 - 1; i >= 0; i--){ //遍历odd的各个二进制位
System.out.print(odd >> i & 1); //输出odd的各个二进制位
}
System.out.println();
System.out.println("偶数序列:");
for (int i = len2 - 1; i >= 0; i--){ //遍历even的各个二进制位
System.out.print(even >> i & 1); //遍历even的各个二进制位
}
}
}
获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
最新推荐文章于 2020-09-14 22:53:33 发布