将100的高四位与低四位互换
/**
* 1.先将 a 左移4位 ==> 0b01000000
2.再将 a 右移4位 ==> 0b00000110
3.将两次的结果按位或, 保留下1的位 ==> 0b01000110
*/
unsigned char a = 0b01100100;
unsigned char b = (a << 4) | (a >> 4);
printf("%d\n", b);
将10010010奇偶位互换
方法一
unsigned char num = 0b10010010;
//清零操作,使用按位与&, 保留的数位为 1 ,清零的数位为0
//1.将 num 左移一位
unsigned char left = num << 1;
//2.保留偶数位,奇数位清零
unsigned char cleanleft = left & 0b10101010;
//3.将 num 右移一位
unsigned char right = num >> 1;
//4.保留奇数位,偶数位清零
unsigned char cleanright = right & 0b01010101;
//5.将两次清零的结果按位或
unsigned char result = cleanleft | cleanright;
printf("%d\n", result);
方法二
//先清零,再移位
unsigned char number = 0b10010010;
unsigned char cleanodd = number & 0b10101010;
unsigned char right2 = cleanodd >> 1;
unsigned char cleaneven = number & 0b01010101;
unsigned char left2 = cleaneven << 1;
unsigned char result2 = left | right;
printf("%d\n", result);