二进制运算

今天笔试,遇到了二进制运算,因此做一点笔记

​如果有不对的,欢迎指正,我会进行修改​

首先:

正数的原码,反码,补码就是其本身。
负数的原码就是原码表示,反码就是除符号位以外取反,补码就是最低位+1
这里,符号位不参与转换,但是在与运算时需要参与。
正数符号位 0
负数符号位 1


正数和正数的二进制运算。

就直接转二进制的原码就行

正数&正数

console.log(2 & 8);

// 0


2 -> 0000000010
8 -> 0000001000

直接与运算为 0


正数和负数的二进制进行运算

负数需要转二进制进行运算

带有负数

console.log(-2 & 3);

// 2


-2 -> 000000010 -> 1111111101 -> 111111110
3 -> 000000011

111111110 -1 取反 -> 0000010 就是2

然后就是符号问题
正数为0,负数为1,然后 & 为0,所以为正数。