位元運算子

位元運算子是用來做位元運算的,以bit為單位的運算。

javascript位元運算子其實不常被用到,主要的用途是用少量的記憶體(1個]bit),

來記憶一個狀態是否發生。這種應用在低階語言很常被使用,不過在javascript ,

真的很少看到人這樣用,所以這一章大家隨便看看 我隨便寫寫=="...

javascript的位元運算子:

&      ==> 位元AND運算,兩個運算子都為1時,傳回1。

|       ==> 位元OR運算,只要有一個運算子為1就傳回1。

^      ==> 位元XOR運算,兩個運算子相同時傳回0,兩個運算子不相同時傳回1。

~      ==> 位元NOT運算,傳回相反值。

<<    ==>左移運算元。

>>    ==>帶符號右移。

>>>  ==>補0右移。

& (AND) 運算的例子:

alert(0&0); // ==>傳回0

alert(0&1); // ==>傳回0

alert(1&0); // ==>傳回0

alert(1&1); // ==>傳回1

| (OR) 運算的例子:

alert(0|0); // ==>傳回0

alert(0|1); // ==>傳回1

alert(1|0); // ==>傳回1

alert(1|1); // ==>傳回1

^(XOR) 運算的例子:

alert(0^0); // ==>傳回0

alert(0^1); // ==>傳回1

alert(1^0); // ==>傳回1

alert(1^1); // ==>傳回0

~(NOT) 運算的例子:

alert(~0); // ==>傳回-1

alert(~1); // ==>傳回-2

alert(~255); // ==>傳回-256

位元運算很常被用在旗標的判斷,通常是用某個位元代表某個狀態,然後再用旗標檢查位元狀態。

例:

var flaga=1;  // 0001

var flagb=2;  // 0010

var flagc=4;  // 0100

var flagd=8;  //1000

var x=123;

if (x&flaga){}  // ==>檢查x  20 的那個位元是否為0。

if (x&flagb){}  // ==>檢查x  21 的那個位元是否為0。

if (x&flagc){}  // ==>檢查x  22 的那個位元是否為0。

if (x&flagd){} // ==>檢查x  23 的那個位元是否為0。

x=x|flaga;   // ==>將x 20 的那個位元設為1,其餘不變。

x=x|flagb;   // ==>將x 21 的那個位元設為1,其餘不變。

x=x|flagc;   // ==>將x 22 的那個位元設為1,其餘不變。

x=x|flagd;   // ==>將x 23 的那個位元設為1,其餘不變。

smiley如果你覺得寫的還不錯,請給我一個讚喔!!smiley

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章:

回到頂部