前言
在上一篇文章中,我們介紹了&運算子的高級用法,本篇文章,我們將介紹| 運算子的一些高級用法,

一、人物簡介
- 第一位閃亮登場,有請今后會一直教我們C語言的老師 —— 自在,

- 第二位上場的是和我們一起學習的小白程式猿 —— 逍遙,

二、將兩個位元組合并成一個16位整數
#include <stdio.h>
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("合并結果為 %04x\n", result); // 輸出: 0x3412
return 0;
}

三、將一個位元組的低4位和高4位交換
#include <stdio.h>
int main()
{
unsigned char data = https://www.cnblogs.com/Wayne123/archive/2023/04/11/0xab; // 1010 1011
data = (data << 4) | (data >> 4); // 1011 1010
printf("交換結果為 %02x\n", data); // 輸出:0xba
return 0;
}

四、將一個位元組中的某些位置1
#include <stdio.h>
int main()
{
int x;
printf("請輸入一個數:");
scanf("%d", &x);
printf("\n第4位置1后,這個數變為 %d\n", x | 0b1000);
return 0;
}

五、將一個位元組中的某些位置0
#include <stdio.h>
int main() {
int x;
int a = 0b1000;
printf("請輸入一個數:");
scanf("%d", &x);
printf("\n第4位置0后,這個數變為 %d\n", (x | a) - a );
return 0;
}

六、將低位連續的0變為1
#include <stdio.h>
int main()
{
int x;
printf("請輸入一個數:");
scanf("%d", &x);
printf("\n低位連續的0變為1,這個數變為%d\n", x | (x-1) );
return 0;
}


小結
通過這篇文章,我們學會了用位運算子|的5種高級用法
? 1、將兩個位元組合并成一個16位整數
? 2、將一個位元組的低4位和高4位交換
? 3、將一個位元組中的某些位置1
? 4、將一個位元組中的某些位置0
? 5、將低位連續的0變為1
在下一篇文章中,我們將介紹位運算子^的一些高級用法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549747.html
標籤:其他
