C語言中位運算符"|"的5種高級用法總結
更新時間:2023年04月12日 08:29:00 作者:知微之見
這篇文章主要為大家詳細介紹了C語言中位運算符"|"的5種高級用法,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以參考一下
前言
在上一篇文章中,我們介紹了&運算符的高級用法,本篇文章,我們將介紹|運算符的一些高級用法。

一、將兩個字節(jié)合并成一個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;
}

二、將一個字節(jié)的低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;
}

三、將一個字節(jié)中的某些位置1
#include <stdio.h>
int main()
{
int x;
printf("請輸入一個數:");
scanf("%d", &x);
printf("\n第4位置1后,這個數變?yōu)?%d\n", x | 0b1000);
return 0;
}

四、將一個字節(jié)中的某些位置0
#include <stdio.h>
int main() {
int x;
int a = 0b1000;
printf("請輸入一個數:");
scanf("%d", &x);
printf("\n第4位置0后,這個數變?yōu)?%d\n", (x | a) - a );
return 0;
}

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


小結
通過這篇文章,我們學會了用位運算符|的5種高級用法
- 1、將兩個字節(jié)合并成一個16位整數
- 2、將一個字節(jié)的低4位和高4位交換
- 3、將一個字節(jié)中的某些位置1
- 4、將一個字節(jié)中的某些位置0
- 5、將低位連續(xù)的0變?yōu)?
到此這篇關于C語言中位運算符"|"的5種高級用法總結的文章就介紹到這了,更多相關C語言位運算符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言 深入探究動態(tài)規(guī)劃之區(qū)間DP
這幾天在做有關dp的題,看到一個石子合并的問題,本來以為是個貪心,后來仔細一想壓根不是貪心。貪心算法的思路是每次都取最大的,然而石子合并問題有個限制條件就是每次只能取相鄰的,這就決定了它不是個貪心2022-04-04
計時器的time_t和clock_t 的兩種實現方法(推薦)
下面小編就為大家?guī)硪黄嫊r器的time_t和clock_t 的兩種實現方法(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10

