C语言中位运算符"|"的高级用法有哪些
一、将两个字节合并成一个16位整数
#include
int main()
{
unsigned char lowByte = 0x12; // 0001 0010
unsigned char highByte = 0x34; // 0011 0100
unsigned short result = (highByte << 8) | lowByte; // 0011 0100 0001 0010
printf("合并结果为 %04xn", result); // 输出: 0x3412
return 0;
}

二、将一个字节的低4位和高4位交换
#include
int main()
{
unsigned char data = 0xab; // 1010 1011
data = (data << 4) | (data >> 4); // 1011 1010
printf("交换结果为 %02xn", data); // 输出:0xba
return 0;
}

三、将一个字节中的某些位置1
#include
int main()
{
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("n第4位置1后,这个数变为 %dn", x | 0b1000);
return 0;
}

四、将一个字节中的某些位置0
#include
int main() {
int x;
int a = 0b1000;
printf("请输入一个数:");
scanf("%d", &x);
printf("n第4位置0后,这个数变为 %dn", (x | a) - a );
return 0;
}

五、将低位连续的0变为1
#include
int main()
{
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("n低位连续的0变为1,这个数变为%dn", x | (x-1) );
return 0;
}


*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。