JavaScript操作符(一元操作符、位操作符)


JavaScript操作符包括算術操作符、位操作符、關系操作符和相等操作符。只能操作一個值的操作符叫做一元操作符。

遞增和遞減操作符

遞增和遞減操作符有兩個版本:前置型和后置型。前置型操作符位於要操作的變量之前,后置型操作符位於要操作的變量之后。

需要將一個變量的值在使用前就進行加減操作,一般使用前置操作符。

var age=18;
console.log(++age);//前置型操作符是先計算,返回計算后的值。輸出為19
console.log(age);//輸出19;
console.log(--age);//輸出18
var age1=18;
console.log(age1++);//后置型操作符是在包含該語句執行后,才進行加減操作的,此時age1是18
console.log(age1);//此時age1已經變為19;
console.log(age1--);//此時age1依然是19;

從上面大家應該能看出來前置型操作與后置型操作符的區別。前置型操作符,在使用該變量之前已經進行++或者--操作,而后置型操作符是先使用該變量,然后再進行++或者--操作的。

 一元加減操作符

大多數開發人員對一元加減操作符都不陌生,一元+操作符放在數值前面,對數值不會產生影響。一元減操作符(-)用於表現負數,如-1.

位操作符

位操作符用於在最進本的層次上,即按內存中表示數值的位來操作數值。JavaScript中的所有數值以IEEE-754 64位格式存儲,但位操作符並不直接操作64位的值。而是先將64位的值轉換為32位的整數,然后執行操作,最后將結果轉回64位。

對於有符號的整數,32位中的前31位表示整數的值,最后一位表示數值的符號:0表示整數,1表示負數。表示符號的位叫做符號位,符號位的值決定了數值的格式。其中,整數易二進制格式存儲。31位中每一位都表示2的冪,第一位是2^0,第二位是2^1,沒用用到的位用0補充,可以忽略。如數值123,二進制表示為00000000000000000000000011110110,也可以表示為11110110。1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0.

負數也是以二進制來表示,但是使用的是二進制的補碼。計算一個數值的二進制補碼需要經過以下步驟:

1.先求這個數值的絕對值的二進制編碼;

2.求二進制反碼,將二進制碼的0替換1,1替換為0

3.將二進制的反碼加1.

如-123的二進制編碼為:123的二進制編碼,0000 0000 0000 0000 0000 0000 1111 0110,反碼:1111 1111 1111 1111 1111 1111 0000 1001,加1:1111 11111 11111 11111 11111 0000 1010

按為非(~)

按位非操作符由一個波浪線表示,執行按位非操作符其實就是求這個數值的反碼。結果是這個數值的負數減去1.

var num=20;
console.log(~num);//輸出-21
var num2=-20;
console.log(~num2);//輸出19

按位與(and)

按位與操作符由一個字符&表示,它有兩個操作符數。按位與就是將兩個數值的每一位對齊。只有兩個數值的位都為1的時候返回1.其他返回0.如 12&10,輸出結果為8

0000 0000 0000 0000 0000 0000 0001 1000

0000 0000 0000 0000 0000 0000 0001 0100


 

0000 0000 0000 0000 0000 0000 0001 0000

按位或(or)

按位或操作符由一個(|)表示,也有兩個操作數。按位或操作符在有一個為1的 情況下就返回1,只有兩個同時為0才返回0.如12|10,輸出結果為14.

0000 0000 0000 0000 0000 0000 0001 1000

0000 0000 0000 0000 0000 0000 0001 0100


 

0000 0000 0000 0000 0000 0000 0001 1100

按位異或(Xor)

按位異或操作符用一個(^)來表示。按位異或操作符在對應的數值上只有一個1時才返回1,若有兩個1或者兩個0則返回0.如12^10,輸出結果為6

0000 0000 0000 0000 0000 0000 0001 1000

0000 0000 0000 0000 0000 0000 0001 0100


 

0000 0000 0000 0000 0000 0000 0000 1100

左移操作符

左移操作符由兩個小於號組成(<<),這個操作符會將數值的所有為向左移動指定的位數。如果將數值2(10)向左移動5位,結果就是64(1000000)。左移后,右側空出的位置用0補充。

var num=2;
var num1=2<<5;
console.log(num1);//64
console.log(num1.toString(2));//1000000

 右移操作符

右移操作符由兩個大於號(>>)組成,有符號右移操作符向右移動,並保留符號位。有符號的右移與左移正好相反,64向右移動5位,值為2.

var num=64;//1000000;
var num1=num>>5;
console.log(num1.toString(2));//10
console.log(num1);//2

 無符號右移操作符由三個大於號(>>>)組成,運算符將 expression1 的位右移 expression2 中指定的位數。  用零填充右移后左邊空出的位。  右移的位被丟棄.

var temp
temp = -14 >>> 2

變量 temp 具有初始值 -14(二進制補碼 11111111 11111111 11111111 11110010)。  其右移兩位后,值等於 1073741820(即二進制的 00111111 11111111 11111111 11111100)。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM