前言
在上一篇文章中,我們介紹了&
運算子的高階用法,本篇文章,我們將介紹|
運算子的一些高階用法。
一、人物簡介
- 第一位閃亮登場,有請今後會一直教我們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 = 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
在下一篇文章中,我們將介紹位運算子^
的一些高階用法。