JavaScript位運(yùn)算符和二進(jìn)制

JS是一個很神奇的東西受神,就比如位運(yùn)算符麦向,那什么是位運(yùn)算符呢,我們來簡單了解下。
在這之前我們先來了解一下二進(jìn)制和十進(jìn)制互轉(zhuǎn)留潦,
十進(jìn)制轉(zhuǎn)二進(jìn)制(整數(shù)):可以用“除2取余师抄,逆序排列”法仙逻。
什么意思呢服鹅?簡單來說就是:用2整除十進(jìn)制整數(shù),可以得到一個商和余數(shù)杈绸;再用2去除商帖蔓,又會得到一個商和余數(shù),如此進(jìn)行瞳脓,直到商為小于1時為止塑娇,然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位劫侧,依次排列起來埋酬。
舉個例子,我們把99轉(zhuǎn)為二進(jìn)制

99/2 = 49=====余1
49/2 = 24=====余1
24/2 = 12=====余0
12/2 = 6======余0
6/2 = 3=======余0
3/2 = 1=======余1
2/2 = 0=======余1

結(jié)果就是1100011烧栋,也就是說99轉(zhuǎn)為二進(jìn)制的值是1100011

二進(jìn)制轉(zhuǎn)十進(jìn)制(整數(shù)):從后向前 写妥,每個數(shù)依次 * 二的n次方 結(jié)果相加
什么意思呢,我們依然用99的二進(jìn)制數(shù)值來舉例

N = 1000011的位數(shù)(7位)
從1100011的右邊開始 N = 0-6 共計7次
1100011(1*1+1*2+0*4+0*8+0*16+1*32+1*64=99)
得出的值相加等于99

了解了二進(jìn)制和十進(jìn)制互轉(zhuǎn)之后我們再來看位運(yùn)算符

1审姓,位與運(yùn)算符(&)
運(yùn)算規(guī)則:兩個數(shù)都轉(zhuǎn)為二進(jìn)制珍特,然后從高位開始比較,如果兩個數(shù)都為1則為1魔吐,否則為0扎筒。

比如:129&128.

129轉(zhuǎn)換成二進(jìn)制就是10000001,128轉(zhuǎn)換成二進(jìn)制就是10000000酬姆。從高位開始比較得到嗜桌,得到10000000,即128.

129/2 = 64=====余1    128/2 = 64==余0
64/2 = 32=====余0     64/2 = 32===余0 
32/2 = 16=====余0     32/2 = 16===余0
16/2 = 8======余0     16/2 = 8====余0
8/2 = 4=======余0     8/2 = 4=====余0
4/2 = 2=======余0     4/2 = 2=====余0
2/2 = 1=======余0     2/2 = 1=====余0
1/2 = 0=======余1     1/2 = 0=====余1

  129=10000001
  128=10000000
結(jié)果= 10000000 = 128

2轴踱,位或運(yùn)算符(|)
運(yùn)算規(guī)則:兩個數(shù)都轉(zhuǎn)為二進(jìn)制症脂,然后從高位開始比較谚赎,兩個數(shù)只要有一個為1則為1淫僻,否則就為0诱篷。

129轉(zhuǎn)換成二進(jìn)制就是10000001,128轉(zhuǎn)換成二進(jìn)制就是10000000雳灵。從高位開始比較得到棕所,得到10000001,即129.

  129=10000001
  128=10000000
結(jié)果= 10000001 = 129

3悯辙,位異或運(yùn)算符(^)
運(yùn)算規(guī)則是:兩個數(shù)轉(zhuǎn)為二進(jìn)制琳省,然后從高位開始比較,如果相同則為0躲撰,不相同則為1针贬。
例如

var a = 22 ^ 12;
console.log(a);    結(jié)果為26

22/2 = 11 余 0     12/2 = 6 余 0 
11/2 = 5 余 1      6/2 = 3 余 0
5/2 = 2 余 1       3/2 = 1 余 1
2/2 = 1 余 0       1/2 = 0 余 1
1/2 = 0 余 1

    22 = 10110
    12 = 01100
 結(jié)果  = 11010  轉(zhuǎn)換為十進(jìn)制就是26

4,位非運(yùn)算符(~)
運(yùn)算規(guī)則:如果位為0拢蛋,結(jié)果是1桦他,如果位為1,結(jié)果是0.

比如:~37

在Java中谆棱,所有數(shù)據(jù)的表示方法都是以補(bǔ)碼的形式表示快压,如果沒有特殊說明,Java中的數(shù)據(jù)類型默認(rèn)是int,int數(shù)據(jù)類型的長度是8位垃瞧,一位是四個字節(jié)蔫劣,就是32字節(jié),32bit.

8轉(zhuǎn)為二進(jìn)制是100101.

補(bǔ)碼后為: 00000000 00000000 00000000 00100101

取反為: 11111111 11111111 11111111 11011010

因為高位是1个从,所以原碼為負(fù)數(shù)脉幢,負(fù)數(shù)的補(bǔ)碼是其絕對值的原碼取反,末尾再加1嗦锐。

因此鸵隧,我們可將這個二進(jìn)制數(shù)的補(bǔ)碼進(jìn)行還原: 首先,末尾減1得反碼:11111111 11111111 11111111 11011001 其次意推,將各位取反得原碼:

00000000 00000000 00000000 00100110豆瘫,此時二進(jìn)制轉(zhuǎn)原碼為38

所以~37 = -38.

簡單來說,就是:把自己先+1菊值,然后又 - 取反

var a = ~ 25;
console.log(a); //  結(jié)果為 -26 

var a = ~ 10;
console.log(a); //  結(jié)果為 -11

var a = ~ -25;
console.log(a); //  結(jié)果為 24

var a = ~ -10;
console.log(a); //  結(jié)果為 9

好了外驱,今天就暫時到這
欲知后事如何
且聽下回分解

學(xué)藝不精,有錯請及時指出腻窒,以免誤導(dǎo)他人昵宇,謝謝!6印瓦哎!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蒋譬,更是在濱河造成了極大的恐慌割岛,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犯助,死亡現(xiàn)場離奇詭異癣漆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剂买,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惠爽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞬哼,你說我怎么就攤上這事婚肆。” “怎么了坐慰?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵旬痹,是天一觀的道長。 經(jīng)常有香客問我讨越,道長两残,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任把跨,我火速辦了婚禮人弓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘着逐。我一直安慰自己崔赌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布耸别。 她就那樣靜靜地躺著健芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秀姐。 梳的紋絲不亂的頭發(fā)上慈迈,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音省有,去河邊找鬼痒留。 笑死,一個胖子當(dāng)著我的面吹牛蠢沿,可吹牛的內(nèi)容都是我干的伸头。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼舷蟀,長吁一口氣:“原來是場噩夢啊……” “哼恤磷!你這毒婦竟也來了面哼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扫步,失蹤者是張志新(化名)和其女友劉穎魔策,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锌妻,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡代乃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年旬牲,在試婚紗的時候發(fā)現(xiàn)自己被綠了仿粹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡原茅,死狀恐怖吭历,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擂橘,我是刑警寧澤晌区,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站通贞,受9級特大地震影響朗若,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昌罩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一哭懈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茎用,春花似錦遣总、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至古涧,卻和暖如春垂券,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羡滑。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工圆米, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啄栓。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓娄帖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昙楚。 傳聞我的和親對象是個殘疾皇子近速,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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