C++中的按位與&、按位與或|、按位異或^運算符詳解
按位與運算符:&
語法
expression & expression
備注
表達(dá)式可以是其他“與”表達(dá)式,或(遵循下面所述的類型限制)相等表達(dá)式、關(guān)系表達(dá)式、加法表達(dá)式、乘法表達(dá)式、指向成員的指針表達(dá)式、強制轉(zhuǎn)換表達(dá)式、一元表達(dá)式、后綴表達(dá)式或主表達(dá)式。
按位“與”運算符 (&) 會將第一操作數(shù)的每一位與第二操作數(shù)的相應(yīng)位進(jìn)行比較。如果兩個位均為 1,則對應(yīng)的結(jié)果位將設(shè)置為 1。否則,將對應(yīng)的結(jié)果位設(shè)置為 0。
按位“與”運算符的兩個操作數(shù)必須為整型。 算術(shù)轉(zhuǎn)換中所述的常用算術(shù)轉(zhuǎn)換將應(yīng)用于操作數(shù)。
& 的運算符關(guān)鍵字
bitand 運算符是 & 的文本等效項。訪問程序中的 bitand 運算符的方式有兩種:包括頭文件 iso646.h,或使用 /Za(禁用語言擴展)編譯器選項進(jìn)行編譯。
// expre_Bitwise_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise AND
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0xFFFF; // pattern 1111 ...
unsigned short b = 0xAAAA; // pattern 1010 ...
cout << hex << ( a & b ) << endl; // prints "aaaa", pattern 1010 ...
}
按位與或運算符:|
語法
expression | expression
備注
按位“與或”運算符 (|) 將第一個操作數(shù)的每個位與第二個操作數(shù)的對應(yīng)位進(jìn)行比較。如果其中一個位是 1,則將對應(yīng)的結(jié)果位設(shè)置為 1。否則,將對應(yīng)的結(jié)果位設(shè)置為 0。
按位“與或”運算符的兩個操作數(shù)必須為整型。 算術(shù)轉(zhuǎn)換中涵蓋的常用算術(shù)轉(zhuǎn)換適用于操作數(shù)。
| 的運算符關(guān)鍵字
bitor 運算符是|的文本等效項。訪問程序中的 bitor 運算符有兩種方式:包括頭文件 iso646.h,或使用 /Za(禁用語言擴展)編譯器選項進(jìn)行編譯。
// expre_Bitwise_Inclusive_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise inclusive OR
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // pattern 0101 ...
unsigned short b = 0xAAAA; // pattern 1010 ...
cout << hex << ( a | b ) << endl; // prints "ffff" pattern 1111 ...
}
按位異或運算符:^
語法
expression ^ expression
按位“異或”運算符 (^) 將第一操作數(shù)的每個位與第二操作數(shù)的相應(yīng)位進(jìn)行比較。如果一個位是 0,另一個位是 1,則相應(yīng)的結(jié)果位將設(shè)置為 1。否則,將對應(yīng)的結(jié)果位設(shè)置為 0。
按位“異或”運算符的兩個操作數(shù)都必須為整型。 算術(shù)轉(zhuǎn)換中涵蓋的常用算術(shù)轉(zhuǎn)換適用于操作數(shù)。
^ 的運算符關(guān)鍵字
xor 運算符是與 ^ 等效的文本。在您的程序中,可通過兩種方法訪問 xor 運算符:包含頭文件 iso646.h,或使用 /Za(禁用語言擴展)編譯器選項進(jìn)行編譯。
// expre_Bitwise_Exclusive_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise exclusive OR
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // pattern 0101 ...
unsigned short b = 0xFFFF; // pattern 1111 ...
cout << hex << ( a ^ b ) << endl; // prints "aaaa" pattern 1010 ...
}
相關(guān)文章
c++動態(tài)內(nèi)存管理詳解(new/delete)
作為一名編程初學(xué)者,通常學(xué)習(xí)中,發(fā)生內(nèi)存錯誤是件非常麻煩的事情,下面這篇文章主要給大家介紹了關(guān)于c++動態(tài)內(nèi)存管理new/delete的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
C語言中字符串常用函數(shù)strcat與strcpy的用法介紹
以下是對C語言中字符串常用函數(shù)strcat與strcpy的使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07
關(guān)于C++多重繼承下虛表結(jié)構(gòu)的問題
這篇文章主要介紹了C++ 多重繼承下虛表結(jié)構(gòu)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
C/C++詳解實現(xiàn)二層轉(zhuǎn)發(fā)
數(shù)據(jù)鏈路層是開放系統(tǒng)互連 (OSI) 模型中的第二層,該層用于通過 LAN 等單一網(wǎng)絡(luò)進(jìn)行通信的節(jié)點,第二層數(shù)據(jù)包不能從一個網(wǎng)絡(luò)傳輸?shù)搅硪粋€網(wǎng)絡(luò)。而二層轉(zhuǎn)發(fā)是根據(jù)報文的目的MAC直接進(jìn)行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)過程中不用對報文的頭部做任何的修改2022-05-05
數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹子結(jié)構(gòu)的詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹子結(jié)構(gòu)的詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Qt6.0+vs2019環(huán)境配置的實現(xiàn)教程
這篇文章主要介紹了Qt6.0+vs2019環(huán)境配置的實現(xiàn)教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

