全部数值都是转化为二进制机器码保存在内存中。内存
负数一样以二进制码存储,但使用的格式是二进制补码。可是显示给咱们的是一个负号和这个数值绝对值的二进制码。计算一个二进制的补码须要三个步骤:二进制
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)