5、一元加法和一元减法:用法与高中数学中学到的用法相同,一元加法对数字无任何影响,一元减法就是对数值求负。但一元回法和一元减法对字符串进行运算时与parseInt()相似,主要的不同是只有对以"ox"开头的字符串,一元运算符才把它转换为10进制的值。示例: 复制代码 代码如下: var iNum=25; iNum=+iNum; console.log(iNum); //outpus 25
var sNum="50"; console.log(typeof sNum); //outpus string console.log(+sNum); //outpus 50 console.log(typeof +sNum); //outpus number
var sNum1="017"; var sNum2="0xB"; console.log(-sNum1); //outpus -17 console.log(-sNum2); //outpus -11
2.9.2 位运算符 1、位运算NOT:由(~)表示,处理过程如下:
(1) 把运算数转换为32位数字
(2) 把二进制形式转换成它的二进制反码;
(3) 把二进制反码转换为浮点数
示例:
复制代码 代码如下: var iNum1=25; //25 is equal to 0000 0000 0000 0000 0000 0000 0001 1001 var iNum2=~iNum1; //conver to 1111 1111 1111 1111 1111 1111 1110 0110 console.log(iNum2); //outpus -26
//位运算符NOT实质上是对数字求负,然后减1,因此下面的代码也可以得到同样的效果 var iNum3=25; var iNum4=-iNum3-1; console.log(iNum4);
2、位运算AND:由(&)表示,直接对数字的二进制形式进行计算。规则为全为1才为1,否则为0。示例: 复制代码 代码如下: var iNum1=25; //25 is equal to 0000 0000 0000 0000 0000 0000 0001 1001 var iNum2=iNum1&3; // 3 is equal to 0000 0000 0000 0000 0000 0000 0000 0011 console.log(iNum2); // and is 0000 0000 0000 0000 0000 0000 0000 0001 outpus 1
3、位运算OR:由(|)表示,直接对数字的二进制形式进行计算。规则为全为0才为0,否则为1。示例: 复制代码 代码如下: var iNum1=25; //25 is equal to 0000 0000 0000 0000 0000 0000 0001 1001 var iNum2=iNum1|3; // 3 is equal to 0000 0000 0000 0000 0000 0000 0000 0011
4、位运算XOR:由(^)表示,直接对数字的二进制形式进行计算。规则为只有一个数位存放的是1时才为1,否则为0。示例: 复制代码 代码如下: var iNum1=25; //25 is equal to 0000 0000 0000 0000 0000 0000 0001 1001 var iNum2=iNum1^3; // 3 is equal to 0000 0000 0000 0000 0000 0000 0000 0011 console.log(iNum2); // xor is 0000 0000 0000 0000 0000 0000 0001 1010 outpus 26
5、左移运算:由(<<)表示,把数字中的所有数位向左移动指定的数量,保留符号位,左移一位相当于乘以2。 6、有符号右移运算:由(>>)表示,把数字中的所有数位向右移动指定的数量,保留符号位,右移一位相当于除以2。 7、无符号右移运算:由(>>>)表示,把数字中的所有数位向右移动指定的数量。对于正数跟有符号的右移完全一样,对于负数作为正数来处理。 示例: 复制代码 代码如下: var iOld=2; var iOld1=64; var iOld2=64; var iOld3=-2; var iNew=iOld<<5; var iNew1=iOld1>>5; var iNew2=iOld2>>>5; var iNew3=iOld3>>>1; console.log(iNew); //outpus 64 console.log(iNew1); //outpus 2 console.log(iNew2); //outpus 2 console.log(iNew3); //outpus 2147483647
3、逻辑OR运算符:由(||)表示,如果运算数均为Boolean型,只有当运算数均为false时才返回false,否则返回true。OR运算的运算数可以是任何类型,返回值不一定是Boolean值: 如果一个运算数是对象,另一个是Boolean值,返回该对象 如果两个运算数都是对象,返回第一个对象 如果某个运算数是null,返回null 如果某个运算数是NaN,返回NaN 如果某个运算数是undefined,发生错误 ECMAScript中的逻辑OR也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数,示例: 复制代码 代码如下: var bTrue=true; var bResult=bTrue||bUnknow; console.log(bResult); //outpus true var bFalse=false; var bResult=bFalse||bUnknow; console.log(bResult); //outpus ReferenceError: bUnknow is not defined