javascript中有很多符号,有常用的,也有不常用的,常用的大家都知道,所以也就没什么好说的了,但是这些不常用的,虽然用的不多,但是在某些特定的地方又能发挥很大的作用,而且这些符号也很难让人来关注。比如:~。这个符号,说实话我也没用过,但是它确实是存在在javascript中的。按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。按位非是ECMAScript 操作符中少数几个与二进制计算有关的操作符之一。下面看一个例子:

var num1 = 25; // 二进制00000000000000000000000000011001
var num2 = ~num1; // 二进制11111111111111111111111111100110
alert(num2); // -26
alert(num.toString(2)); // "-10010"
按位非操作的本质:操作数的负值减1。
还有一个叫做按位与操作符的由一个和号字符(&)表示,它有两个操作符数。从本质上讲,按位与操作就是将两个数执行AND 操作:

第一个数值的位 第二个数值的位 结 果
1 1 1
1 0 0
0 1 0
0 0 0
简而言之,按位与操作只在两个数值的对应位都是1 时才返回1,任何一位是0,结果都是0。
下面看一个对25 和3 执行按位与操作的例子:

var result = 25 | 3;
alert(result); //27

还有一个是

按位异或操作符由一个插入符号(^)表示,也有两个操作数。以下是按位异或的真值表。
第一个数值的位 第二个数值的位 结 果
1 1 0
1 0 1
0 1 1
0 0 0

按位异或与按位或的不同之处在于,这个操作在两个数值对应位上只有一个1 时才返回1,如果对
应的两位都是1 或都是0,则返回0。
对25 和3 执行按位异或操作的代码如下所示:

var result = 25 ^ 3;
alert(result); //26

还有最后要说的是左移操作符和无符号右移操作符:

左移操作符由两个小于号(<<)表示,这个操作符会将数值的所有位向左移动指定的位数。例如,
如果将数值2(二进制码为10)向左移动5 位,结果就是64(二进制码为1000000),代码如下所示:
var oldValue = 2; // 等于二进制的10
var newValue = oldValue << 5; // 等于二进制的1000000,十进制的64
无符号右移操作符由3 个大于号(>>>)表示,这个操作符会将数值的所有32 位都向右移动。对正
数来说,无符号右移的结果与有符号右移相同。仍以前面有符号右移的代码为例,如果将64 无符号右
移5 位,结果仍然还是2:

这些确实用得少,但是可以作为了解加深对javascript的理解。

 

posted on 2015-06-16 22:16  小哥丶可  阅读(1986)  评论(0编辑  收藏  举报