问题描述:
将一个整数的二进制表示时的奇位与偶位上的数进行交换。
解题思路:
先输入的将整数转换成二进制表示,在将这个二进制数与0101 0101 0101 0101 进行与运算,这样是为了保留偶位上的数值。
然后再将二进制数与1010 1010 1010 1010进行与运算,这样是为了保留保留奇位上的数值。
代码如下:
import java.util.Scanner;
public class _整数的奇偶为交换 {
public static void main(String[] args){
Scanner input= new Scanner(System.in);
System.out.println("请输一个整数:");
int number = input.nextInt();
System.out.println("交换之后的数:\n"+m(number));
}
private static int m(int number){
int even = number & 0xaaaaaaaa;//和1010 1010 1010……做与运算取出偶数位
int base = number & 0x55555555;//和0101 0101 0101……做与运算取出奇数位
return(even>>1)^(base<<1);//连起来
}
}
答案:这个题的答案要根据程序员输入的数而确定。