zoukankan      html  css  js  c++  java
  • 题5:将整数二进制形式的奇偶位交换

    题目描述:

      将一个整数的二进制表示形式的奇数位与偶数位进行交换。

      如: 9的二进制是   1001   奇偶位交换后得到  0110  

    原理: 就是利用二进制位运算的技巧,先将整数N与 aaaa aaaa (偶数位全为1的数)进行与(&)运算,提取整数N的偶数位,然后将整数N与 5555 5555 进行逻辑与(&)运算,提取整数N的奇数位,最后将提取出来的奇数位左移一位,偶数位右移一位 然后将两个位移动的结果进行异或运算,即可得到奇数位与偶数位交换的结果。

    实现步骤:

       1. N与aaaa aaaa 进行与运算,获取偶数位

       2.N与5555 5555 进行与运算,获取奇数位

       3.获取的奇数位左移一位,偶数位右移一位。两个移动后的结果进行异或(^)运算得出结果

    具体代码:

        public static void main(String[] args) {
            //分别与 aaaaaaaa 和55555555 进行与运算,得到的两个分别左移和右移然后异或
            Scanner input =new Scanner(System.in);
            System.out.println("请输入一个整数:");
            int N=input.nextInt();
            //1. 整数 与 偶数位全部为1的数    进行与运算,可以获得整数中偶数位的信息。
            int ou=N&0xaaaaaaaa;  // 1010 1010 1010 1010 1010 1010 1010 1010
            //2. 整数 与 奇数位全部为1的数   进行与运算 ,可以获取整数中奇数位的信息。 
            int ji=N&0x55555555;  // 0101 0101 0101 0101 0101 0101 0101 0101
            //3. 把偶数位的信息左移一位,奇数位的信息右移一位 ,就可以交换整数的奇偶位。
            int res=(ou>>1)^(ji<<1);
            System.out.println(Integer.toString(N,2));
            System.out.println(Integer.toString(res,2));
    
        }
  • 相关阅读:
    VS2010中使用JSONCPP方法
    VC获取外网IP
    JSON样例
    JSON详解
    vc获取本地IP
    Java中创建对称密钥的代码
    密和解密程序的一些概念
    在ireport报错 报 jdk5找不到的解决办法
    Java中创建对称密钥的步骤
    比较好用的一个jaspereport模板 生成html页面模板
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12944459.html
Copyright © 2011-2022 走看看