.................

将整数的二进制位进行奇偶位置互换

package _1_Bit_Operation;

import java.util.Scanner;

/**
 * @Auther: YuanJun
 * @Date: 2021/12/9 - 12 - 09 - 10:40
 * @Description: _1_Bit_Operation
 */

//将整数的二进制位进行奇偶位置互换

public class test8 {
    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
        /**
         * 奇数位用x表示,偶数位用y表示
         *    先保留偶数位
         *    x y x y  x y x y
         * &  1 0 1 0  1 0 1 0
         * --------------------
         *    x 0 x 0  x 0 x 0
         *    再保留奇数位
         *    x y x y  x y x y
         * &  0 1 0 1  0 1 0 1
         * --------------------
         *    0 y 0 y  0 y 0 y
         *
         *    保留的奇数位数左移一位,保留的偶数位数右移一位,移位后进行异或运算
         *    0 x 0 x  0 x 0 x
         * ^  y 0 y 0  y 0 y 0
         * --------------------
         *    y x y x  y x y x
         *
         *    如: 10100   20
         *    00000000 00000000 00000000 00010100  -> 20
         *    奇偶位置互换后得到
         *    00000000 00000000 00000000 00101000  -> 40
         *
         *    1.取偶数位
         *    00000000 00000000 00000000 00010100
         * &  10101010 10101010 10101010 10101010
         * --------------------------------------
         *    00000000 00000000 00000000 00000000
         *    2.取奇数位
         *    00000000 00000000 00000000 00010100
         * &  01010101 01010101 01010101 01010101
         * --------------------------------------
         *    00000000 00000000 00000000 00010100
         *    3.偶数位右移一位,奇数位左移一位,再进行异或运算
         *    00000000 00000000 00000000 00000000
         * ^  00000000 00000000 00000000 00101000
         * --------------------------------------
         *    00000000 00000000 00000000 00101000  得到 -> 40
         */
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int n = input.nextInt();
        int ji = n & 0x5555555;  //n&01010101 01010101 01010101 01010101
        int ou = n & 0xaaaaaaa;  //n&10101010 10101010 10101010 10101010
        int m = (ji<<1)^(ou>>1);
        System.out.println(m);
    }
}

 

 

posted on 2021-12-09 11:22  么么^  阅读(108)  评论(0编辑  收藏  举报

Live2D