C語言中位運(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é)
通過這篇文章,我們學(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ùn)算符"|"的5種高級(jí)用法總結(jié)的文章就介紹到這了,更多相關(guān)C語言位運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
排列組合總結(jié):將結(jié)果進(jìn)行輸出的實(shí)現(xiàn)方法
本篇文章關(guān)于排列組合的總結(jié),對(duì)結(jié)果進(jìn)行輸出做了介紹。需要的朋友參考下2013-05-05詳解VS2010實(shí)現(xiàn)創(chuàng)建并生成動(dòng)態(tài)鏈接庫dll的方法
在某些應(yīng)用程序場(chǎng)景下,需要將一些類或者方法編譯成動(dòng)態(tài)鏈接庫dll,以便別的.exe或者.dll文件可以通過第三方庫的方式進(jìn)行調(diào)用,下面就簡(jiǎn)單介紹一下如何通過VS2010來創(chuàng)建動(dòng)態(tài)鏈接庫2022-12-12Opencv實(shí)現(xiàn)讀取攝像頭和視頻數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)讀取攝像頭和視頻數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C++實(shí)現(xiàn)LeetCode(113.二叉樹路徑之和之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(113.二叉樹路徑之和之二),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++實(shí)現(xiàn)ETW進(jìn)行進(jìn)程變動(dòng)監(jiān)控詳解
ETW提供了一種對(duì)用戶層應(yīng)用程序和內(nèi)核層驅(qū)動(dòng)創(chuàng)建的事件對(duì)象的跟蹤記錄機(jī)制。為開發(fā)者提供了一套快速、可靠、通用的一系列事件跟蹤特性。本文將利用ETW進(jìn)行進(jìn)程變動(dòng)監(jiān)控,需要的可以參考一下2022-07-07