将整数的奇偶位互换
举例说明
就拿整数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)!