写一个方法把0和1互转(0置1,1置0)

方法一:异或

异或运算符”∧”:相同取0 不同取1

它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。

即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。 可以简单理解为无进位相加 

const convert = num => num^1;
convert(0); // 1
convert(1); // 0

方法二:二进制取反

1的二进制原码:0000 0001

~1 之后:1111 1110 (~就是按位取反

以原码的角度看待 1111 1110 ,分析出它是负数(由于第一位是1,因此为负数)

这个负数要在计算机中存储,必须是补码,而原码转换补码规则:符号位不变,数值位取反加1
所以 1111 1110变成补码为:1000 0010
这样的补码代表:-2 

~1; // -2
~-2; // 1
function interChange (num) {
  return ~num+2
}
console.log('interChange',interChange(1)) // 0