C/C++位運(yùn)算概述與應(yīng)用(一)

簡(jiǎn)述位運(yùn)算

1.位運(yùn)算概述

從現(xiàn)代計(jì)算機(jī)中所有的數(shù)據(jù)二進(jìn)制的形式存儲(chǔ)在設(shè)備中宴卖。即0、1兩種狀態(tài)衔峰,計(jì)算機(jī)對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行的運(yùn)算(+佩脊、-、*垫卤、/)都是叫位運(yùn)算威彰,即將符號(hào)位共同參與運(yùn)算的運(yùn)算。

2.位運(yùn)算概覽

符號(hào) 描述 運(yùn)算規(guī)則
& 兩個(gè)位都為1時(shí)穴肘,結(jié)果才為1
| 兩個(gè)位都為1時(shí)歇盼,結(jié)果才為1
^ 異或 兩個(gè)位相同為0,相異為1
~ 取反 0變1评抚,1變0
<< 左移 各二進(jìn)位全部左移若干位豹缀,高位丟棄,低位補(bǔ)0
>> 右移 各二進(jìn)位全部右移若干位慨代,對(duì)無(wú)符號(hào)數(shù)邢笙,高位補(bǔ)0,有符號(hào)數(shù)侍匙,各編譯器處理方法不一樣氮惯,有的補(bǔ)符號(hào)位(算術(shù)右移),有的補(bǔ)0(邏輯右移)

3.位運(yùn)算規(guī)則詳細(xì)描述

1)按位與運(yùn)算符(&)

定義:參加運(yùn)算的兩個(gè)數(shù)據(jù)丈积,按二進(jìn)制位進(jìn)行“與”運(yùn)算筐骇。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int v1, v2, v3, v4;
    v1 = 1 & 1;  //二級(jí)制表示 0001 & 0001 = 0001 = 1
    v2 = 3 & 4;  //二級(jí)制表示 0011 & 0100 = 0000 = 0
    v3 = 6 & 7;  //二級(jí)制表示 0110 & 0111 = 0110 = 6
    v4 = 18 & 24;//二級(jí)制表示 00010010 & 00011000 = 00010000 = 16 
    cout << v1 << " " << v2 << " " << v3 << " " << v4;
    return 0;
}

2)按位或運(yùn)算符(|)

定義:參加運(yùn)算的兩個(gè)對(duì)象,按二進(jìn)制位進(jìn)行“或”運(yùn)算江滨。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int v1, v2, v3, v4;
    v1 = 1 | 1;  //二級(jí)制表示 0001 | 0001 = 0001 = 1
    v2 = 3 | 4;  //二級(jí)制表示 0011 | 0100 = 0111 = 7
    v3 = 6 | 7;  //二級(jí)制表示 0110 | 0111 = 0111 = 7
    v4 = 18 | 24;//二級(jí)制表示 00010010 | 00011000 = 00011010 = 26 
    cout << v1 << " " << v2 << " " << v3 << " " << v4;
    return 0;
}

3)異或運(yùn)算符(^)

定義:參加運(yùn)算的兩個(gè)數(shù)據(jù)铛纬,按二進(jìn)制位進(jìn)行“異或”運(yùn)算。
先大致講下什么是異或:
異或(xor)是一個(gè)數(shù)學(xué)運(yùn)算符唬滑。它應(yīng)用于邏輯運(yùn)算告唆。異或的數(shù)學(xué)符號(hào)為“⊕”棺弊,計(jì)算機(jī)符號(hào)為“xor”。其運(yùn)算法則為:
a⊕b = (?a ∧ b) ∨ (a ∧?b)
如果a擒悬、b兩個(gè)值不相同,則異或結(jié)果為1懂牧。如果a侈净、b兩個(gè)值相同,異或結(jié)果為0僧凤。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int v1, v2, v3, v4;
    v1 = 1 ^ 1;  //二級(jí)制表示 0001 | 0001 = 0000 = 0
    v2 = 3 ^ 4;  //二級(jí)制表示 0011 | 0100 = 0111 = 7
    v3 = 6 ^ 7;  //二級(jí)制表示 0110 | 0111 = 0001 = 1
    v4 = 18 ^ 24;//二級(jí)制表示 00010010 | 00011000 = 00001010 = 10
    cout << v1 << " " << v2 << " " << v3 << " " << v4;
    return 0;
}

4)取反運(yùn)算符 (~)

定義:參加運(yùn)算的一個(gè)數(shù)據(jù)畜侦,按二進(jìn)制進(jìn)行“取反”運(yùn)算。

~1=0
~0=1

5)左移運(yùn)算符(<<)

定義:將一個(gè)運(yùn)算對(duì)象的各二進(jìn)制位全部左移若干位(左邊的二進(jìn)制位丟棄躯保,右邊補(bǔ)0)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int v1, v2, v3, v4;
    v1 = 1 << 3;; //二級(jí)制表示 0001 = 1000 = 8
    v2 = 3 << 2;;//二級(jí)制表示 0011 = 1100 = 12
    v3 = 6 << 5;  //二級(jí)制表示 00000110 = 11000000 = 192
    v4 = 18 << 1;//二級(jí)制表示 00010010 = 00100100 = 36
    cout << v1 << " " << v2 << " " << v3 << " " << v4;
    return 0;
}

6)右移運(yùn)算符(>>)

定義:將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位旋膳,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1途事,右邊丟棄验懊。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int v1, v2, v3, v4;
    v1 = 12 >> 3;; //二級(jí)制表示 1100 = 0001 = 1
    v2 = 13 >> 2;;//二級(jí)制表示 1101 = 0011 = 3
    v3 = 56 >> 4;  //二級(jí)制表示 00111000 = 00000011 = 3
    v4 = 18 >> 1;//二級(jí)制表示 00010010 = 00001001 = 9
    cout << v1 << " " << v2 << " " << v3 << " " << v4;
    return 0;
}

相關(guān)位運(yùn)算的應(yīng)用可以看我另一篇博客
C/C++位運(yùn)算概述與應(yīng)用(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市尸变,隨后出現(xiàn)的幾起案子义图,更是在濱河造成了極大的恐慌,老刑警劉巖振惰,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歌溉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡骑晶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門草慧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)桶蛔,“玉大人,你說(shuō)我怎么就攤上這事漫谷∽欣祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵舔示,是天一觀的道長(zhǎng)碟婆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)惕稻,這世上最難降的妖魔是什么竖共? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮俺祠,結(jié)果婚禮上公给,老公的妹妹穿的比我還像新娘借帘。我一直安慰自己,他們只是感情好淌铐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布肺然。 她就那樣靜靜地躺著,像睡著了一般腿准。 火紅的嫁衣襯著肌膚如雪际起。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天吐葱,我揣著相機(jī)與錄音加叁,去河邊找鬼。 笑死唇撬,一個(gè)胖子當(dāng)著我的面吹牛它匕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窖认,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豫柬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扑浸?” 一聲冷哼從身側(cè)響起烧给,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喝噪,沒(méi)想到半個(gè)月后础嫡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酝惧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年榴鼎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晚唇。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巫财,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哩陕,到底是詐尸還是另有隱情平项,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布悍及,位于F島的核電站闽瓢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏心赶。R本人自食惡果不足惜扣讼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望园担。 院中可真熱鬧届谈,春花似錦枯夜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至曙搬,卻和暖如春摔吏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵装。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工征讲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橡娄。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓诗箍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親挽唉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滤祖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容