摘要:雖然需要轉換,但這個過程與其他數學運算和布爾操作相比要快很多。位掩碼位掩碼用于處理同時存在多個布爾選項的情形。使用單個數字的每一位來判定選項是否成立,從而有效地把數字轉換為由布爾值標記組成的數組。
位操作
JavaScript中的數字都按照IEEE-754(Institute of Electrical and Electronics Engineers)標準以64位格式存儲。在位操作中,數字被轉換為有符號32位格式。每次運算符會直接操作該32位數以得到結果。雖然需要轉換,但這個過程與JavaScript其他數學運算和布爾操作相比要快很多。
Bitwise AND 按位與
兩個操作數的對應位都是1時,則在該位置返回1。
Bitwise OR 按位或
兩個操作數的對應位只要一個為1時,則在該位返回1。
Bitwise XOR 按位異或
兩個操作數的對應位只有一個為1,則在該位返回1。
Bitwise NOT 按位取反
遇0則返回1,反之亦然。
顏色交替32位數字的二進制底層表示,偶數的最低位是0,奇數的最低位是1。如果此數為偶數,和1按位與的結果是0;如果此數為奇數,和1按位與的結果是1。可以使用該方法實現顏色交替,效率可能會比純數學運算(如,取模)快50%。
for (let i = Things.length - 1; i >= 0; i--) { if(i & 1) { className = "oddColor"; }else { className = "evenColor"; } }位掩碼
位掩碼用于處理同時存在多個布爾選項的情形。使用單個數字的每一位來判定選項是否成立,從而有效地把數字轉換為由布爾值標記組成的數組。掩碼中的每個選項的值都等于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 }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107991.html
摘要:另外自己寫代碼測試了下和的速度,比較結果如下位操作轉換整數的原理參考上面對于位操作的說明,點擊下面鏈接有這樣一段話中,數字存儲是雙進度位浮點數。但是位操作卻會把要操作的運算元當做位帶符號的整數。因此進行位操作時,會自動把數字先轉換為整數。 本文將會列舉并說明JavaScript 把一個number(或者numerical的對象)轉換成一個整數相關方法。 使用parseInt parse...
摘要:原碼補碼和反碼原碼一個數在計算機中是以二進制的形式存在的,其中第一位存放符號正數為負數為。中的位運算在中按位操作符會將其操作數轉成補碼形式的有符號位整數。原文鏈接由扯到中的位運算 這個話題的由來是2016年3月份的時候 NPM 社區發生了‘left-pad’事件,不久后社區就有人發布了用來補救的,也是現在大家能用到的 left-pad 庫。 最開始這個庫的代碼是這樣的。 module....
摘要:例如,十進制數,用二進制表示則為。按位操作符操作數字的二進制形式,但是返回值依然是標準的數值。不同為真相同為假二進制按位異或運算從左到右按位非為真,為假對每一項進行非操作,遇真則假,遇假則真。 二進制與十六進制 二進制用 0 1 表示 2= 10十六進制 前綴0x 用0123456789ABCDEF表示 2= 0x2二進制與十六進制的轉換十六進制的每位 等于二進制的四位 十六進制 0x...
閱讀 3560·2021-09-22 10:52
閱讀 1588·2021-09-09 09:34
閱讀 1990·2021-09-09 09:33
閱讀 757·2019-08-30 15:54
閱讀 2595·2019-08-29 11:15
閱讀 713·2019-08-26 13:37
閱讀 1667·2019-08-26 12:11
閱讀 2975·2019-08-26 12:00