将二进制数n的i到j位替换为m, 将整数(二进制)的奇偶位互换(均采用移位操作)
input:n=10000000000, m=10101, i=2, j=6
output:n=10001010100
将二进制n的第2到6位替换为m。
1 int updateBits(int n, int m, int i, int j){ 2 int max = ~0; 3 int left = max - ((1 << j) - 1); 4 int right = ((1 << i) - 1); 5 int mask = left | right; 6 return (n & mask) | (m << i); 7 }
整数奇偶位互换
int swapOddEvenBits(int x){ return ((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1); }