你的位置:首页 > 软件开发 > Java > JavaScript基本概念(四)

JavaScript基本概念(四)

发布时间:2016-01-07 16:00:04
操作符1.一元操作符  只能操作一个值的操作符叫做一元操作符,一元操作符有递增(递减)操作符以及一元加(减)操作符。  递增递减操作符分为前置递增(递减)操作符和后置递增(递减)操作符,不管是前置还是后置的递增(递减)操作符,其使用方式与java中的递增递减操作符一样,有区别的地 ...

JavaScript基本概念(四)

操作符

1.一元操作符

  只能操作一个值的操作符叫做一元操作符,一元操作符有递增(递减)操作符以及一元加(减)操作符。

  递增递减操作符分为前置递增(递减)操作符和后置递增(递减)操作符,不管是前置还是后置的递增(递减)操作符,其使用方式与java中的递增递减操作符一样,有区别的地方就是javascript中的递增递减操作符可以对非数字类型的值进行操作,看下面的例子:

 JavaScript基本概念(四)

a.对包含有效数字字符的字符串执行递增递减操作时,会将字符串转换成数字后再执行递增递减操作。字符串最后转换为number类型。

b.对于不能转换成数字的字符串,返回NaN,且原字符串变为NaN。

c.对于布尔型值,true转换为1,false转换为0后执行递增递减操作。

d.对象类型,先执行对象的valueOf()方法,对取出的值执行上述的方式进行递增递减,如果返回NaN,那么再执行toString()方法,同样采用上述的方式进行递增递减。

前置递增递减操作符,变量的值都是在语句被求值以前改变;后置递增递减操作符,变量的值都是在语句被求值以后改变。

  对于一元加或者减操作符,一元加操作符以(+)表示,一元减操作符以(-)表示。对于数字使用一元加或者减操作符与数学中的加减操作符一样,但是在对非数字值使用一元加减操作符时,相当于对当前值使用Number()函数。具体的操作如下所示:

 JavaScript基本概念(四)

 

2.位操作符

  位操作符实际上是操作内存中表示数值的位来操作数值。ECMAScript中的所有数值都是以IEEE-754 64位格式存储,但是位操作符并不是直接操作64位的值,而是先把64位值转换为32位,然后执行操作,将操作结果再转换回64位。

  对于有负号的整数,32位中的前31位存储数值,32位是符号位,1表示负数,0表示正数。其中正数以纯二进制的格式存储,31位中的每一位都是2的指数次幂,2的指数从0开始,一直向后类推。没有用到的位以0填充负数同样用二进制存储,但是使用的格式是二进制补码(计算方式请自行百度)。在ECMAScript中负数的二进制表示形式是该负数的绝对值的二进制前面加上负号,例如18的二进制码是10010,那么-18的二进制码就是-10010。

  ECMAScript中对数值应用位操作符时,首先64位的数值会被转换成32位,然后执行位操作,操作完成之后将32位的结果再转换回64位。其中NaN和Infinit应用位操作符时,会当做0处理。对于非数字型值,自动使用Number()函数转换成数值后再进行位操作,得到一个数字结果

2.1按位非

使用波浪线(~)表示,按位非操作符返回数值的反码,如下例子所示:

 JavaScript基本概念(四)

  可以看到对25执行按位非操作之后,结果返回-26,-26的二进制码是26的二进制码前面加上负号,本来应该是二进制补码,但是在ECMAScript中显示的就是整数的二进制码的负值。同时上述例子可以看出按位非操作符等价于当前值的负值减一

2.2.按位与|按位或|按位异或

按位与操作符用&表示,该操作符对两个操作数进行操作,按照下表中的规则依次比较两个数值对应位置的值,返回一个数值。比较规则如下(两个数值的相同位置上的值都为1结果为1,其他的结果都是0):

第一个数值的位

第二个数值的位

比较结果

1

1

1

1

0

0

0

1

0

0

0

0

例子如下:

 JavaScript基本概念(四)

 

       按位或操作符使用|表示,同样是对两个操作数操作,对比规则如下所示(两个数值的相同位置上的值只要有一个为1,结果就是1):

第一个数值的位

第二个数值的位

比较结果

1

1

1

1

0

1

0

1

1

0

0

0

例子如下:

 JavaScript基本概念(四)

按位异或使用(^)表示,操作两个操作数,比较规则(两个数值相同位置上的值相同,结果是0,不同结果是1):

第一个数值的位

第二个数值的位

比较结果

1

1

0

1

0

1

0

1

1

0

0

0

例子如下:

 JavaScript基本概念(四)

 

2.3.左移

左移使用(<<)表示。如下所示:

 JavaScript基本概念(四)

通过上面的例子可以看出,左移操作符将数值的所在位向左移动指定的位数,也就是向左了5位,移动后原数值的右侧空出五个位置,用0来补充空位。注意:左移操作符不会影响操作数的符号位,也就是说-11向左移动5位结果是-352。

 

2.4.有符号的右移|无符号右移

有符号的右移用(>>)表示,先看例子:

 JavaScript基本概念(四)

有符号的右移会将数值向右移动指定的位数,但是保留符号位,也就是说有符号的右移是不会造成数值符号改变的,右移造成的空位用符号位的值来填充,以得到一个完整的值。

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

数值128转换为32位二进制码如上所示,箭头所指位置为符号位


原标题:JavaScript基本概念(四)

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。