自学内容网 自学内容网

将整数的奇偶位互换

举例说明
就拿整数9举例,它的二进制是1001。前半部分的10交换后变成01,后半部分的01交换后变成10。组合起来就得到了0110。
解题思路
1001&0101=0001结果消除了偶数位(将偶数位变成0),保留了奇数位。
1001&1010=1000结果消除了奇数位,保留了偶数位。
将原数字的奇数位左移一位,将原数字的偶数位右移一位。再用异或运算组合在一起就是奇偶位互换的结果。

package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here
        int x=9;
        int r1,r2;
        r1=x&0x55555555;//二进制的0101 0101 0101 0101 0101 0101 0101 0101转成16进制变成55555555
        r2=x&0xaaaaaaaa;
        int s=(r1<<1)^(r2>>1);
        System.out.println(s);


    }
}


原文地址:https://blog.csdn.net/zhourongxiang1/article/details/143700639

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!