1.位運算思維-- 題5 奇數偶數位互換

問題:將一個數的奇數和偶數位對換後,輸出結果。

思路:①將這個數和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);

    }}

 

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 488
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章