1.NOT
位元運算符NOT由~表示.NOT運算子的實質是對數字求負,然後減1.
位元運算符NOT是三步的處理過程.
a.把運算子轉換成32位元字
b.把二進位形式轉換成它的二進位反碼
c.把二進位反碼轉換成浮點數
例子:
var num=10; document.write(~num);
結果:
-11
2.AND
位元運算符AND由&表示.直接對數位二進位形式進行運算.運算規則如下:
第一個數字 |
第二個數字 |
結果 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
例子:
var num1=10;//1010 var num2=11;//1011 document.write(num1 & num2);
結果:
10的二進位表示1010
3.OR
位元運算符OR由符號|表示.直接對二進位進行運算,規則如下:
第一個數字 |
第二個數字 |
結果 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
例子:
var num1=10;//1010 var num2=11;//1011 document.write(num1 | num2);
結果:
11的二進位表示是1011
4.XOR
位元運算符XOR由符號^表示.直接對二進位進行運算.規則如下:
第一個數字 |
第二個數字 |
結果 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
例子:
var num1=10;//1010 var num2=11;//1011 document.write(num1 ^ num2);
結果:
1的二進位表示是1
5.<<
左移運算子由<<表示.它把數字中所有位元向左移動指定的數量.
注意:
a.在左移數位時,數字右邊的空位由0來填充,使結果是完整的32位元字
b.左移操作保留數位符號位.
例子:
document.write(10<<2+"<br/>"); document.write(-10<<2);
效果:
6.>>
有符號右移運算由>>表示.它將32位元字中的所有數字整體右移.同時保留該數的符號.
注意:
a.符號位保持不變
b.在右移數位時,數字左邊的空位由0填充
例子:
document.write(10>>1); document.write("<br/>"); document.write(-10>>1);
效果:
7.>>>
無符號右移由>>>表示.它將32位元字中的所有數字整體右移.
注意:
a.無符號右移運算用0填充所有空位.
b.對於整數,無符號右移和有符號右移結果一樣.
c.對於負數,由於左側補0,導致負數經過無符號右移後,變為一個正數
例如:
document.write(-10>>>1);
結果:
運算過程:
-10
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
經過無符號右移-10>>>1
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
結果:
2147483643