//二进制数的高四位和低四位互换
unsigned char a = 130;
unsigned char left = 0;//存储左移之后的结果
unsigned char right = 0;//存储右移之后的结果
left = a << 4;
right = a >> 4;
printf("%d", left | right);
//二进制数的奇偶位互换
//如果想做清零操作,
//使用按位与, 清零位为0,保留位为1
unsigned char b = 0b10110111;
unsigned char left = 0;//存储左移之后的结果
unsigned char right = 0;//存储右移之后的结果
//(1)先左移一位
left = b << 1;
//(2)保存偶数位,将奇数位清零
left = left & 0b10101010;
//(3)右移一位
right = b >> 1;
//(4)保留奇数位,将偶数位清零
right = right & 0b01010101;
//(5)按位或
printf("%d\n", left | right);