Java的位運(yùn)算符詳解實(shí)例——與(&)、非(~)逞怨、或(|)姨涡、異或(^)

在筆試題中經(jīng)常遇見這個題目,所以著重學(xué)習(xí)以下阐枣。

原文鏈接=====https://www.cnblogs.com/lichengze/p/5713409.html

位運(yùn)算符主要針對二進(jìn)制,它包括了:“與”奄抽、“非”蔼两、“或”、“異或”逞度。從表面上看似乎有點(diǎn)像邏輯運(yùn)算符额划,但邏輯運(yùn)算符是針對兩個關(guān)系運(yùn)算符來進(jìn)行邏輯運(yùn)算,而位運(yùn)算符主要針對兩個二進(jìn)制數(shù)的位進(jìn)行邏輯運(yùn)算档泽。下面詳細(xì)介紹每個位運(yùn)算符俊戳。


1.與運(yùn)算符

與運(yùn)算符用符號“&”表示,其使用規(guī)律如下:

兩個操作數(shù)中位都為1馆匿,結(jié)果才為1抑胎,否則結(jié)果為0,例如下面的程序段渐北。

public class data13

{

????public static void main(String[] args)

????{

????????int a=129;

????????int b=128;

????????System.out.println("a 和b 與的結(jié)果是:"+(a&b));

????}

}

運(yùn)行結(jié)果

a 和b 與的結(jié)果是:128

下面分析這個程序:

“a”的值是129阿逃,轉(zhuǎn)換成二進(jìn)制就是10000001,而“b”的值是128赃蛛,轉(zhuǎn)換成二進(jìn)制就是10000000恃锉。根據(jù)與運(yùn)算符的運(yùn)算規(guī)律,只有兩個位都是1焊虏,結(jié)果才是1淡喜,可以知道結(jié)果就是10000000,即128诵闭。


2.或運(yùn)算符

或運(yùn)算符用符號“|”表示炼团,其運(yùn)算規(guī)律如下:

兩個位只要有一個為1,那么結(jié)果就是1疏尿,否則就為0瘟芝,下面看一個簡單的例子。

public class data14

{

????public static void main(String[] args)

????{

????????int a=129;

????????int b=128;

????????System.out.println("a 和b 或的結(jié)果是:"+(a|b));

????}

}

運(yùn)行結(jié)果

a 和b 或的結(jié)果是:129

下面分析這個程序段:

a 的值是129褥琐,轉(zhuǎn)換成二進(jìn)制就是10000001锌俱,而b 的值是128,轉(zhuǎn)換成二進(jìn)制就是10000000敌呈,根據(jù)或運(yùn)算符的運(yùn)算規(guī)律贸宏,只有兩個位有一個是1造寝,結(jié)果才是1,可以知道結(jié)果就是10000001吭练,即129诫龙。


3.非運(yùn)算符

非運(yùn)算符用符號“~”表示,其運(yùn)算規(guī)律如下:

如果位為0鲫咽,結(jié)果是1签赃,如果位為1,結(jié)果是0分尸。

最近做的筆試題中出現(xiàn)這樣一道題:

題目:What results from the following code fragment?

? ? int i = 5;

? ? int j = 10;

? ? System.out.println(i + ~j);

? ? A Compilation error because”~”doesn’t operate on integers

? ? B -5

? ? C -6

? ? D 15

答案是C锦聊。原來~是按位取反

10的原碼:????? 0000 0000 0000 1010

由于在計算機(jī)中以補(bǔ)碼形式存儲,又正數(shù)的補(bǔ)碼就是原碼本身箩绍,所以計算機(jī)可以直接計算~10

~10按位取反:1111 1111 1111 0101

那還是計算機(jī)中以補(bǔ)碼形式存儲孔庭,所以當(dāng)前的計算后的~10是補(bǔ)碼形式,我們要對其求原碼材蛛,又因?yàn)樨?fù)數(shù)的補(bǔ)碼是原碼按位取反再加1史飞,所以,我們可以得到反碼(補(bǔ)碼減1)

~10的反碼:? 1111 1111 1111 0100

~10的原碼:? 1000 0000 0000 1011

所以~10是-11在計算機(jī)的補(bǔ)碼仰税,所以最終答案是C。

4.異或運(yùn)算符

異或運(yùn)算符是用符號“^”表示的抽诉,其運(yùn)算規(guī)律是:

兩個操作數(shù)的位中陨簇,相同則結(jié)果為0,不同則結(jié)果為1迹淌。下面看一個簡單的例子河绽。

public class data16

{

????public static void main(String[] args)

????{

????????int a=15;

????????int b=2;

????????System.out.println("a 與 b 異或的結(jié)果是:"+(a^b));

????}

}

運(yùn)行結(jié)果

a 與 b 異或的結(jié)果是:13

分析上面的程序段:a 的值是15,轉(zhuǎn)換成二進(jìn)制為1111唉窃,而b 的值是2耙饰,轉(zhuǎn)換成二進(jìn)制為0010,根據(jù)異或的運(yùn)算規(guī)律纹份,可以得出其結(jié)果為1101 即13苟跪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蔓涧,隨后出現(xiàn)的幾起案子件已,更是在濱河造成了極大的恐慌,老刑警劉巖元暴,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篷扩,死亡現(xiàn)場離奇詭異,居然都是意外死亡茉盏,警方通過查閱死者的電腦和手機(jī)鉴未,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門枢冤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铜秆,你說我怎么就攤上這事淹真。” “怎么了羽峰?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵趟咆,是天一觀的道長。 經(jīng)常有香客問我梅屉,道長值纱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任坯汤,我火速辦了婚禮虐唠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惰聂。我一直安慰自己疆偿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布搓幌。 她就那樣靜靜地躺著杆故,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溉愁。 梳的紋絲不亂的頭發(fā)上处铛,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音拐揭,去河邊找鬼撤蟆。 笑死,一個胖子當(dāng)著我的面吹牛堂污,可吹牛的內(nèi)容都是我干的家肯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盟猖,長吁一口氣:“原來是場噩夢啊……” “哼讨衣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起式镐,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤值依,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碟案,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愿险,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辆亏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风秤。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖扮叨,靈堂內(nèi)的尸體忽然破棺而出缤弦,到底是詐尸還是另有隱情,我是刑警寧澤彻磁,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布碍沐,位于F島的核電站,受9級特大地震影響衷蜓,放射性物質(zhì)發(fā)生泄漏累提。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一磁浇、第九天 我趴在偏房一處隱蔽的房頂上張望斋陪。 院中可真熱鬧,春花似錦置吓、人聲如沸无虚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽友题。三九已至,卻和暖如春戴质,著一層夾襖步出監(jiān)牢的瞬間咆爽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工置森, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人符糊。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓凫海,卻偏偏與公主長得像,于是被迫代替她去往敵國和親男娄。 傳聞我的和親對象是個殘疾皇子行贪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355