C語言中位運(yùn)算符"|"的5種高級用法總結(jié)
前言
在上一篇文章中,我們介紹了&運(yùn)算符的高級用法,本篇文章,我們將介紹|運(yùn)算符的一些高級用法。

一、將兩個字節(jié)合并成一個16位整數(shù)
#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("合并結(jié)果為 %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("交換結(jié)果為 %02x\n", data); // 輸出:0xba
return 0;
}

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

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

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


小結(jié)
通過這篇文章,我們學(xué)會了用位運(yùn)算符|的5種高級用法
- 1、將兩個字節(jié)合并成一個16位整數(shù)
- 2、將一個字節(jié)的低4位和高4位交換
- 3、將一個字節(jié)中的某些位置1
- 4、將一個字節(jié)中的某些位置0
- 5、將低位連續(xù)的0變?yōu)?
到此這篇關(guān)于C語言中位運(yùn)算符"|"的5種高級用法總結(jié)的文章就介紹到這了,更多相關(guān)C語言位運(yùn)算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言 深入探究動態(tài)規(guī)劃之區(qū)間DP
這幾天在做有關(guān)dp的題,看到一個石子合并的問題,本來以為是個貪心,后來仔細(xì)一想壓根不是貪心。貪心算法的思路是每次都取最大的,然而石子合并問題有個限制條件就是每次只能取相鄰的,這就決定了它不是個貪心2022-04-04
C++中二進(jìn)制數(shù)據(jù)序列化和反序列化詳解
這篇文章主要為大家詳細(xì)介紹了C++中二進(jìn)制數(shù)據(jù)序列化和反序列化的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-11-11
解析C++無鎖隊(duì)列的實(shí)現(xiàn)代碼
本篇文章是對C++無鎖隊(duì)列的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
計(jì)時器的time_t和clock_t 的兩種實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)硪黄?jì)時器的time_t和clock_t 的兩種實(shí)現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別
這篇文章主要介紹了淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

