C語言中位運算符的高級用法(2)

2023-08-22 12:22:48 來源:知微之見


(資料圖)

前言

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

一、人物簡介

第一位閃亮登場,有請今后會一直教我們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("合并結果為 %04xn", 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("交換結果為 %02xn", data);      // 輸出:0xba    return 0;}

四、將一個字節中的某些位置1

#include < stdio.h >int main() {    int x;    printf("請輸入一個數:");    scanf("%d", &x);    printf("n第4位置1后,這個數變為 %dn", x | 0b1000);     return 0;}

五、將一個字節中的某些位置0

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

六、將低位連續的0變為1

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

小結

通過這篇文章,我們學會了用位運算符|的5種高級用法

1、將兩個字節合并成一個16位整數

2、將一個字節的低4位和高4位交換

3、將一個字節中的某些位置1

4、將一個字節中的某些位置0

5、將低位連續的0變為1

在下一篇文章中,我們將介紹位運算符^的一些高級用法。

標簽:

上一篇:C語言中位運算符的高級用法(4)
下一篇:最后一頁