1. 程式人生 > 其它 >JavaScript 二進位制運算

JavaScript 二進位制運算

1.NOT

位運算子NOT由~表示.NOT運算子的實質是對數字求負,然後減1.

位運算子NOT是三步的處理過程.

a.把運算子轉換成32位數字

b.把二進位制形式轉換成它的二進位制反碼

c.把二進位制反碼轉換成浮點數

例子:

        var num=10;
        console.log(~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
        console.log(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
        console.log(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
        console.log(num1 ^ num2);

結果:

 1的二進位制表示是1

5.<<

左移運算子由<<表示.它把數字中所有位數向左移動指定的數量.

注意:

a.在左移數位時,數字右邊的空位由0來填充,使結果是完整的32位數字

b.左移操作保留數字的符號位.

例子:

        console.log(10<<2+"<br/>");
        console.log(-10<<2);

效果:

6.>>

有符號右移運算由>>表示.它將32位數字中的所有數字整體右移.同時保留該數的符號.

注意:

a.符號位保持不變

b.在右移數位時,數字左邊的空位由0填充

例子:

        console.log(10>>1);
        console.log("<br/>");
        console.log(-10>>1);

效果:

 

7.>>>

無符號右移由>>>表示.它將32位數字中的所有數字整體右移.

注意:

a.無符號右移運算用0填充所有空位.

b.對於整數,無符號右移和有符號右移結果一樣.

c.對於負數,由於左側補0,導致負數經過無符號右移後,變為一個正數

例如:

       console.log(-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

8.字串表示二進位制

字首增加‘0b’即可

例如: var a = "0101";

   a = "0b" + a;

       var b = a|0;

  console.log(b);

結果:

5