JavaScript 位操作符

位操作符用于在最基本的層次上,即按內(nèi)存中表示的數(shù)值的位來(lái)操作數(shù)值,ECMAScript中所有數(shù)值都以IEEE-754 64位格式存儲(chǔ),但位操作符并不直接操作64位的值。而是先將64位的值轉(zhuǎn)換成32位的整數(shù),然后執(zhí)行操作,最后再將結(jié)果轉(zhuǎn)換回64位。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),由于64位存儲(chǔ)格式是透明的,因此整個(gè)過(guò)程就像是只存在32位的整數(shù)一樣。

對(duì)于有符號(hào)的整數(shù),32位中的前31位用于表示整數(shù)的值。第32位用于表示數(shù)值的符號(hào):0表示整數(shù),1表示負(fù)數(shù)。這個(gè)表示符號(hào)的位叫做符號(hào)位,符號(hào)位的值決定了其他位數(shù)值的格式。其中,正數(shù)以純二進(jìn)制格式存儲(chǔ),31位中的每一位都表示2的冪。

10010 ?=> ?2(4)*1 + 2(3)*0 + 2(2)*0 + 2(1)*1 + 2(0)*0 = 18

負(fù)數(shù)同樣以二進(jìn)制碼存儲(chǔ),但是用的格式是二進(jìn)制補(bǔ)碼。計(jì)算一個(gè)數(shù)值的二進(jìn)制補(bǔ)碼,需要經(jīng)過(guò)以下3個(gè)步驟:

1.求這個(gè)數(shù)值絕對(duì)值的二進(jìn)制碼

2.求二進(jìn)制反碼

3.得到的二進(jìn)制反碼加1

按位非(NOT)

按位非操作符由一個(gè)波浪線(~)表示,執(zhí)行按位非的結(jié)果就是返回?cái)?shù)值的反碼。按位非是ECMASsript操作符中少數(shù)幾個(gè)與二進(jìn)制計(jì)算有關(guān)的操作符之一。

var num = 25;

var num2 = ~num;

alert(num2); // -26

按位與(AND)

按位與操作符由一個(gè)和號(hào)字符(&)表示,它有兩個(gè)操作符數(shù)。從本質(zhì)上講,按位與操作就是將兩個(gè)數(shù)值的每一位對(duì)齊,然后根據(jù)規(guī)則(兩個(gè)數(shù)值的對(duì)應(yīng)位都是1時(shí)才返回1,其他都返回0),對(duì)相同位置上的兩個(gè)數(shù)執(zhí)行AND操作。

var r = 25 & 3;

alert(r); // 1

按位或(OR)

按位或操作符由一條豎線符號(hào)(|)表示,和按位與一樣也是兩個(gè)操作符數(shù)。從本質(zhì)上講,其將兩個(gè)數(shù)值的每一位對(duì)齊,然后根據(jù)規(guī)則(兩個(gè)數(shù)值的對(duì)應(yīng)位都是0時(shí)才返回0,其他都返回1),對(duì)相同位置上的兩個(gè)數(shù)執(zhí)行OR操作。

var r = 25 | 3;

alert(r); // 27

按位異或(XOR)

按位異或操作符有一個(gè)插入符號(hào)(^)表示,也有兩個(gè)操作符。規(guī)則(對(duì)應(yīng)位相等返回0,不等返回1)

左移

左移操作符是由兩個(gè)小于號(hào)(<<)表示,這個(gè)操作符會(huì)將數(shù)值的所有位向左移動(dòng)指定位數(shù)。

右移

右移操作符是由兩個(gè)大于號(hào)(>>)表示,這個(gè)操作符會(huì)將數(shù)值的所有位向右移動(dòng)指定位數(shù)。

左移帶符號(hào)

左移操作符是由三個(gè)小于號(hào)(<<<)表示,這個(gè)操作符會(huì)將數(shù)值的所有位向左移動(dòng)指定位數(shù)。

右移帶符號(hào)

右移操作符是由三個(gè)大于號(hào)(>>>)表示,這個(gè)操作符會(huì)將數(shù)值的所有位向右移動(dòng)指定位數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 高級(jí)運(yùn)算符 文檔地址 作為 基本運(yùn)算符 的補(bǔ)充,Swift 提供了幾個(gè)高級(jí)運(yùn)算符執(zhí)行對(duì)數(shù)傳值進(jìn)行更加復(fù)雜的操作。這...
    hrscy閱讀 913評(píng)論 0 2
  • 表達(dá)式 表達(dá)式是由數(shù)字、運(yùn)算符、數(shù)字分組符號(hào)(如括號(hào))、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合...
    劼哥stone閱讀 649評(píng)論 0 4
  • 今天吃貨妹子推薦的是椰汁香芒糯米卷 特點(diǎn)是新鮮、健康,完全俘獲了吃貨妹子的味蕾 芒果的清甜、椰汁的濃郁、糯米的軟糯...
    以寧的糖閱讀 831評(píng)論 7 9
  • 《愛(ài)情審判》 審訊室一: “警官、那女人真是我殺死的!我有一百個(gè)理由殺掉她!” “哦?”戴眼鏡的...
    Qy邵唯閱讀 805評(píng)論 1 1
  • 每個(gè)人都是別人生活的配角,而各種各樣的生活交織成一張名叫青春的網(wǎng)。我的青春是一場(chǎng)無(wú)知的奔忙,在奔忙和緊迫的時(shí)光里,...
    桃之夭夭其葉蓁蓁閱讀 320評(píng)論 0 0

友情鏈接更多精彩內(nèi)容