逍遙自在學C語言 位運算符 "|" 的5種高級用法
前言
在上一篇文章中,我們介紹了&運算符的高級用法,本篇文章,我們將介紹| 運算符的一些高級用法。

一、人物簡介
- 第一位閃亮登場,有請今后會一直教我們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
在下一篇文章中,我們將介紹位運算符^的一些高級用法。

浙公網安備 33010602011771號