二進制運算
今天筆試,遇到了二進制運算,因此做一點筆記
如果有不對的,歡迎指正,我會進行修改
首先:
正數的原碼,反碼,補碼就是其本身。
負數的原碼就是原碼表示,反碼就是除符號位以外取反,補碼就是最低位+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,所以為正數。