将整数的奇偶位互换
import org.assertj.core.api.Assertions;
public class _05_交换奇偶位 {
public static void main(String[] args) {
int a = 0b01000000_00000000_00000000_00000000;
System.out.println(a);
int b = m(a);
System.out.println(b);
Assertions.assertThat(b).isEqualTo(0b10000000_00000000_00000000_00000000); //一个第三方库,判断b是否和括号里的一致
}
private static int m(int i) {
int ou = i & 0xaaaaaaaa;//和1010 1010 1010 。。。。做与运算取出偶数位
int ji = i & 0x55555555;//和0101 0101 0101.。。。。做与运算取出奇数位
return (ou >> 1) ^ (ji << 1); // 运用 异或 连起来
}
}
要点:
利用位运算进行运算
2021年2月15日