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

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

二、將一個(gè)字節(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;
}

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

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

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


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

