問題:將一個數的奇數和偶數位對換後,輸出結果。
思路:①將這個數和101010...(32位)作與運算,記作C【目的:保留偶數位】
②將這個數和01010101....(32位)作與運算,記作D【目的:保留奇數位】
③將c右移一位,將d左移一位後作異或運算。【目的:將奇數偶數位對換】
圖解:(以9爲例,二進制是1001)
import java.util.Scanner;
public class jiou {
public static void main(String args[])
{
Scanner sc =new Scanner(System.in);
int a=sc.nextInt();//輸入的數存爲變量a
//System.out.println(Integer.toBinaryString(a));//以二進制形式輸出
int c=a&0xaaaaaaaa;//101010....改爲16進制
int d=a&0x55555555;//010101....改爲16進制
int f=(c>>1)^(d<<1);//異或運算
System.out.println(f);
}}