摘要:雖然需要轉(zhuǎn)換,但這個過程與其他數(shù)學(xué)運算和布爾操作相比要快很多。位掩碼位掩碼用于處理同時存在多個布爾選項的情形。使用單個數(shù)字的每一位來判定選項是否成立,從而有效地把數(shù)字轉(zhuǎn)換為由布爾值標(biāo)記組成的數(shù)組。
位操作
JavaScript中的數(shù)字都按照IEEE-754(Institute of Electrical and Electronics Engineers)標(biāo)準(zhǔn)以64位格式存儲。在位操作中,數(shù)字被轉(zhuǎn)換為有符號32位格式。每次運算符會直接操作該32位數(shù)以得到結(jié)果。雖然需要轉(zhuǎn)換,但這個過程與JavaScript其他數(shù)學(xué)運算和布爾操作相比要快很多。
Bitwise AND 按位與
兩個操作數(shù)的對應(yīng)位都是1時,則在該位置返回1。
Bitwise OR 按位或
兩個操作數(shù)的對應(yīng)位只要一個為1時,則在該位返回1。
Bitwise XOR 按位異或
兩個操作數(shù)的對應(yīng)位只有一個為1,則在該位返回1。
Bitwise NOT 按位取反
遇0則返回1,反之亦然。
顏色交替32位數(shù)字的二進制底層表示,偶數(shù)的最低位是0,奇數(shù)的最低位是1。如果此數(shù)為偶數(shù),和1按位與的結(jié)果是0;如果此數(shù)為奇數(shù),和1按位與的結(jié)果是1。可以使用該方法實現(xiàn)顏色交替,效率可能會比純數(shù)學(xué)運算(如,取模)快50%。
for (let i = Things.length - 1; i >= 0; i--) { if(i & 1) { className = "oddColor"; }else { className = "evenColor"; } }位掩碼
位掩碼用于處理同時存在多個布爾選項的情形。使用單個數(shù)字的每一位來判定選項是否成立,從而有效地把數(shù)字轉(zhuǎn)換為由布爾值標(biāo)記組成的數(shù)組。掩碼中的每個選項的值都等于2的冪。
const OPTION_A = 1; const OPTION_B = 2; const OPTION_C = 4; const options = OPTION_A | OPTION_B; // 選項A是否在options中 if(options & OPTION_A) { // code here } // 選項A是否在options中 if(options & OPTION_B) { // code here } // 選項A是否在options中 if(options & OPTION_C) { // code here }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107991.html
摘要:另外自己寫代碼測試了下和的速度,比較結(jié)果如下位操作轉(zhuǎn)換整數(shù)的原理參考上面對于位操作的說明,點擊下面鏈接有這樣一段話中,數(shù)字存儲是雙進度位浮點數(shù)。但是位操作卻會把要操作的運算元當(dāng)做位帶符號的整數(shù)。因此進行位操作時,會自動把數(shù)字先轉(zhuǎn)換為整數(shù)。 本文將會列舉并說明JavaScript 把一個number(或者numerical的對象)轉(zhuǎn)換成一個整數(shù)相關(guān)方法。 使用parseInt parse...
摘要:復(fù)習(xí)表達(dá)式和運算符運算符擁有如下類型的運算符。例如十進制數(shù)字用二進制表示為,位運算符就是在這個二進制表示上執(zhí)行運算,但是返回結(jié)果是標(biāo)準(zhǔn)的數(shù)值。因此,用于布爾值時,當(dāng)任何一個操作數(shù)為則返回如果操作數(shù)都是則返回。 復(fù)習(xí)js day2 表達(dá)式和運算符 運算符 JavaScript 擁有如下類型的運算符。本節(jié)描述了運算符和運算符的優(yōu)先級。 賦值運算符(Assignment operators...
摘要:原碼補碼和反碼原碼一個數(shù)在計算機中是以二進制的形式存在的,其中第一位存放符號正數(shù)為負(fù)數(shù)為。中的位運算在中按位操作符會將其操作數(shù)轉(zhuǎn)成補碼形式的有符號位整數(shù)。原文鏈接由扯到中的位運算 這個話題的由來是2016年3月份的時候 NPM 社區(qū)發(fā)生了‘left-pad’事件,不久后社區(qū)就有人發(fā)布了用來補救的,也是現(xiàn)在大家能用到的 left-pad 庫。 最開始這個庫的代碼是這樣的。 module....
摘要:例如,十進制數(shù),用二進制表示則為。按位操作符操作數(shù)字的二進制形式,但是返回值依然是標(biāo)準(zhǔn)的數(shù)值。不同為真相同為假二進制按位異或運算從左到右按位非為真,為假對每一項進行非操作,遇真則假,遇假則真。 二進制與十六進制 二進制用 0 1 表示 2= 10十六進制 前綴0x 用0123456789ABCDEF表示 2= 0x2二進制與十六進制的轉(zhuǎn)換十六進制的每位 等于二進制的四位 十六進制 0x...
閱讀 3589·2021-09-22 10:52
閱讀 1599·2021-09-09 09:34
閱讀 2001·2021-09-09 09:33
閱讀 768·2019-08-30 15:54
閱讀 2687·2019-08-29 11:15
閱讀 725·2019-08-26 13:37
閱讀 1680·2019-08-26 12:11
閱讀 2987·2019-08-26 12:00