成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

js中的位運(yùn)算

banana_pi / 2770人閱讀

摘要:位與真真為真,其余為假和二進(jìn)制位與運(yùn)算由于奇數(shù)的二進(jìn)制末位為,偶數(shù)為,跟的位與運(yùn)算后,分別為和,因此可以用位與運(yùn)算來(lái)判斷奇偶數(shù)。為奇數(shù)為偶數(shù)位或假假為假,其余為真和二進(jìn)制位或運(yùn)算整數(shù)與的位或運(yùn)算,都是本身。

前言

在平常的工作中位運(yùn)算用得比較少,一般用其他更容易理解得方式去達(dá)到相同目的。在計(jì)算機(jī)內(nèi)部,一切運(yùn)算最終都轉(zhuǎn)化成二級(jí)制運(yùn)算,直接使用二級(jí)制運(yùn)算執(zhí)行得效率是最高的。偶爾看到一道面試題,復(fù)習(xí)一下這方面知識(shí),先來(lái)看一下這道面試題:

var a = 10;
a ^= (1<<4) - 1;
a的值

題目先放一放,看看js中有哪些位運(yùn)算。

1. 位與(&)

真真為真,其余為假

9和10二進(jìn)制位與運(yùn)算

      1001
    & 1010
    -------
      1000

由于奇數(shù)的二進(jìn)制末位為1,偶數(shù)為0,跟1的位與運(yùn)算后,分別為1和0,因此可以用位與運(yùn)算來(lái)判斷奇偶數(shù)。

if(n & 1) {
    console.log("n為奇數(shù)");
} else {
    console.log("n為偶數(shù)");
}
2. 位或(|)

假假為假,其余為真

9和10二進(jìn)制位或運(yùn)算

      1001
    | 1010
    -------
      1011

整數(shù)與0的位或運(yùn)算,都是本身。浮點(diǎn)數(shù)不支持位運(yùn)算,過(guò)程中會(huì)自動(dòng)轉(zhuǎn)化成整數(shù),利用這一點(diǎn),可以將浮點(diǎn)數(shù)與0進(jìn)行位或運(yùn)算即可達(dá)到取整目的。

console.log(15.22 | 0); // 15
3. 位非(~)

真為假,假為真

9二進(jìn)制位非運(yùn)算

    ~ 0000000000000000 0000000000001001
    -------取反
      1111111111111111 1111111111110110
    -------符號(hào)位不變,其余取反
      1000000000000000 0000000000001001
    -------加1
      1000000000000000 0000000000001010

按位非操作,首先每一位取反,然后,第一位為負(fù)數(shù)符號(hào)位保持不變,剩余取反加1就是最后結(jié)果。

4. 異或(^)

相同為假,不同為真

9和10二進(jìn)制異或運(yùn)算

      1001
    | 1010
    -------
      0011

可以用于交換兩個(gè)整數(shù)的值,不過(guò)一般很少這么用

var a = 3, b = 5;
a ^= b;
b ^= a;
a ^= b;
console.log("a:", a); // 5
console.log("b:", b); // a
5. 有符號(hào)左移(<<)

首位符號(hào)為不動(dòng),把32位二進(jìn)制數(shù)字整體往左邊移動(dòng)指定位數(shù),左邊超出部分被舍去,右邊補(bǔ)0。

9二進(jìn)制有符號(hào)左移5位
    9<<5
    0000000000000000 0000000000001001
    ------
    0000000000000000 0000000100100000

計(jì)算機(jī)內(nèi)是這樣位移計(jì)算的,實(shí)際應(yīng)用計(jì)算我們可以通過(guò)公式:num * (2^n),即:9*Math.pow(2,5)

6. 有符號(hào)右移(>>)

首位符號(hào)為不動(dòng),把32位二進(jìn)制數(shù)字整體往右邊移動(dòng)指定位數(shù),右邊超出部分被舍去,左邊補(bǔ)0。

288二進(jìn)制有符號(hào)右移5位
    9>>5
    0000000000000000 0000000100100000
    ------
    0000000000000000 0000000000001001

計(jì)算機(jī)內(nèi)是這樣位移計(jì)算的,實(shí)際應(yīng)用計(jì)算我們可以通過(guò)公式:num / (2^n),即:288/Math.pow(2,5)

7. 無(wú)符號(hào)右移(>>>)

符號(hào)為也跟著一起移動(dòng),這樣,無(wú)符號(hào)右移會(huì)把負(fù)數(shù)的二進(jìn)制當(dāng)成整數(shù)的二進(jìn)制碼

4294967296二進(jìn)制無(wú)有符號(hào)右移5位
    4294967296>>>5
    1000000000000000 0000000000000000
    ------
    0000010000000000 0000000000000000
回歸面試題
var a = 10;
a ^= (1<<4) - 1;

1<<4左移4位,即1*Math.pow(2, 4) == 16,則a ^= 15

10和15的異或運(yùn)算
    1111
  ^ 1010
 .........
    0101

0101二進(jìn)制表示5,所以a的值位5

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/93266.html

相關(guān)文章

  • 由left-pad扯到JS的位運(yùn)算

    摘要:原碼補(bǔ)碼和反碼原碼一個(gè)數(shù)在計(jì)算機(jī)中是以二進(jìn)制的形式存在的,其中第一位存放符號(hào)正數(shù)為負(fù)數(shù)為。中的位運(yùn)算在中按位操作符會(huì)將其操作數(shù)轉(zhuǎn)成補(bǔ)碼形式的有符號(hào)位整數(shù)。原文鏈接由扯到中的位運(yùn)算 這個(gè)話題的由來(lái)是2016年3月份的時(shí)候 NPM 社區(qū)發(fā)生了‘left-pad’事件,不久后社區(qū)就有人發(fā)布了用來(lái)補(bǔ)救的,也是現(xiàn)在大家能用到的 left-pad 庫(kù)。 最開(kāi)始這個(gè)庫(kù)的代碼是這樣的。 module....

    LeoHsiun 評(píng)論0 收藏0
  • 復(fù)習(xí)js 2

    摘要:復(fù)習(xí)表達(dá)式和運(yùn)算符運(yùn)算符擁有如下類(lèi)型的運(yùn)算符。例如十進(jìn)制數(shù)字用二進(jìn)制表示為,位運(yùn)算符就是在這個(gè)二進(jìn)制表示上執(zhí)行運(yùn)算,但是返回結(jié)果是標(biāo)準(zhǔn)的數(shù)值。因此,用于布爾值時(shí),當(dāng)任何一個(gè)操作數(shù)為則返回如果操作數(shù)都是則返回。 復(fù)習(xí)js day2 表達(dá)式和運(yùn)算符 運(yùn)算符 JavaScript 擁有如下類(lèi)型的運(yùn)算符。本節(jié)描述了運(yùn)算符和運(yùn)算符的優(yōu)先級(jí)。 賦值運(yùn)算符(Assignment operators...

    yhaolpz 評(píng)論0 收藏0
  • 深入研究js的位運(yùn)算及用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點(diǎn)數(shù)的形式儲(chǔ)存,但是做位運(yùn)算的時(shí)候,是以位帶符號(hào)的整數(shù)進(jìn)行運(yùn)算的,并且返回值也是一個(gè)位帶符號(hào)的整數(shù)。如下表應(yīng)用場(chǎng)景取整對(duì)于一般的整數(shù),返回值不會(huì)有任何變化。例如,結(jié)果為負(fù)數(shù)存儲(chǔ)采用的形式是二進(jìn)制補(bǔ)碼。 什么是位運(yùn)算? 位運(yùn)算是在數(shù)字底層(即表示數(shù)字的 32 個(gè)數(shù)位)進(jìn)行運(yùn)算的。由于位運(yùn)算是低級(jí)的運(yùn)算操作,所以速度往往也是最快的(相對(duì)其它運(yùn)算如加減乘除來(lái)說(shuō)),并...

    zhoutao 評(píng)論0 收藏0
  • 深入研究js的位運(yùn)算及用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點(diǎn)數(shù)的形式儲(chǔ)存,但是做位運(yùn)算的時(shí)候,是以位帶符號(hào)的整數(shù)進(jìn)行運(yùn)算的,并且返回值也是一個(gè)位帶符號(hào)的整數(shù)。如下表應(yīng)用場(chǎng)景取整對(duì)于一般的整數(shù),返回值不會(huì)有任何變化。例如,結(jié)果為負(fù)數(shù)存儲(chǔ)采用的形式是二進(jìn)制補(bǔ)碼。 什么是位運(yùn)算? 位運(yùn)算是在數(shù)字底層(即表示數(shù)字的 32 個(gè)數(shù)位)進(jìn)行運(yùn)算的。由于位運(yùn)算是低級(jí)的運(yùn)算操作,所以速度往往也是最快的(相對(duì)其它運(yùn)算如加減乘除來(lái)說(shuō)),并...

    hlcfan 評(píng)論0 收藏0
  • 深入講解js的位運(yùn)算及實(shí)際用法

    摘要:雖然在內(nèi)部,數(shù)值都是以位浮點(diǎn)數(shù)的形式儲(chǔ)存,但是做位運(yùn)算的時(shí)候,是以位帶符號(hào)的整數(shù)進(jìn)行運(yùn)算的,并且返回值也是一個(gè)位帶符號(hào)的整數(shù)。如下表應(yīng)用場(chǎng)景取整對(duì)于一般的整數(shù),返回值不會(huì)有任何變化。例如,結(jié)果為負(fù)數(shù)存儲(chǔ)采用的形式是二進(jìn)制補(bǔ)碼。 什么是位運(yùn)算? 位運(yùn)算是在數(shù)字底層(即表示數(shù)字的 32 個(gè)數(shù)位)進(jìn)行運(yùn)算的。由于位運(yùn)算是低級(jí)的運(yùn)算操作,所以速度往往也是最快的(相對(duì)其它運(yùn)算如加減乘除來(lái)說(shuō)),并...

    jifei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<