我有下面的代碼位運算符:〜在JavaScript
var a = parseInt('010001',2);
console.log(a.toString(2));
// 10001
var b = ~a;
console.log(b.toString(2));
// -10010
〜對每個位NOT運算符。 NOT a產生a的倒數 值(又名補碼)。因此
應該回到這個。
所以我不明白,我們怎麼能得到-10010呢?唯一可能的解釋是:
010001被否定101110,但他寫這篇-10001 ,然後一個不起眼的原因,他給我兩個補 和-10001成爲-10010。
但是,在我看來,這一切都非常模糊,您是否會對精確發生的事情有所瞭解。
它看起來像的Javascript認爲這是一個32位有符號一世nt下蓋。 0b010001 = 0x00000011或十進制17.當作爲帶符號的32位整數處理時,它的補碼是0xFFFFFFEE或十進制-18,相當於0x11111111,11111111,11111111,11101110。 –
另外,0b10010爲正數18,所以-0b10010爲-18。 –