在js中有 ~ | & ^ << >> 等位運算子。
在對乙個數值使用位運算子時,js會先將數值轉換為二進位制,然後進行位運算。
在js中對乙個數值轉進行二進位制轉換,會得到乙個長度為32位的二進位制數,通常第乙個為1的位之前所有為0的為在表示時可以省略。
常見位運算子使用方法有下列幾種:
~:非,~ a 即 將a的二進位製碼的每一位(32位)中的0和1互換得到新值。事實上,非位運算相當於對數值進行取負運算,再減 1。即 ~a=-(a+1)。如~1為-2,~-1為 0。
&:與 ,a & b 即 將a和b中ab都為1的位組成新值,如 1111 & 111100 值為 1100
| :或 ,a | b 即 將a和b中ab有為1的位組成新值,如 1010 | 100010 值為 101010
^ :異,a ^ b 即 將a和b中ab不同的位組成新值(即乙個為0另乙個為1,則為1,兩個都為0或都為1,則為0),如 1010 ^ 111000 值為 110010
<<:左移,a << 2 即 將 a 前2位丟棄,後2位補0
>>:右移,a >> 4 即 將a 後4位丟棄,前4位補0
使用示例:
console.log(~-2);//1
console.log(~-1);//0
console.log(~0);//-1
console.log(~1);//-2
console.log(~2);//-3
//由於indexof方法返回-1表示不包含指定元素,否則為包含,
//所以可以利用~可以把-1轉換為0,否則為非0整數
var arr = ['a', 'b']
if(~arr.indexof('a'))
// true
js位運算子
我們可能很少在程式設計中用位運算,如果沒深入學習,可能也很難理解。平時的數值運算,其實是要先轉換成二進位制再進行運算的,而位運算就是直接進行二進位制運算,所以位運算的執行效率肯定是更高的。下面通過一些例項來加深對位運算的理解。運算子我們都知道,只有兩個都為真,結果才為真。道理是一樣的,只有兩個數的值...
js左移運算子 ECMAScript 位運算子
重溫整數 ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32 位表示整數的符號,0 表示正數,1 表示負數。數值範圍從 2...
位運算子,「,」逗號運算子,
位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...