位操作符
所有数值都是转化为二进制机器码保存在内存中。
负数同样以二进制码存储,但使用的格式是二进制补码。但是显示给我们的是一个负号和这个数值绝对值的二进制码。计算一个二进制的补码需要三个步骤:
1.求这个数值绝对值的二进制码;
2.求二进制反码,即是讲0替换成1,1替换成0;
3.得到的二进制反码加1。
按位非(NOT)
var num1 = 25; // 0000000**00011001
var num2 = ~num1; //111****11100110
alert(num2); //-26
这里,对25执行按位非操作,结果得到了-26。这也验证了按位非操作本质:操作数的负值减1.因此,下面的代码也可能得到相同的值。
var num1 = 25;
var num2 = -num -1;
alert(num2); //-26
按位与(AND)
每一步都是一个深刻的脚印