14 javascript bit-manipulation operator-overloading
提前感谢大家 -
alert((~1).toString(2));
Run Code Online (Sandbox Code Playgroud)
输出: -10
但是在PHP/Java中它输出11111111111111111111111111111110
我错过了什么,为什么Javascript会在输出中添加" - "?
谢谢,山姆
我知道Java用二进制补码表示负数,而11111111111111111111111111111111用二进制表示,这就是~1给出的,代表-2.或者,用二进制表示带负号-10,这就是你得到的.
使用二进制补码计算负数10(在基数2中)的方法是首先反转所有位,给出:
11111111111111111111111111111101
然后你加1,给你:
11111111111111111111111111111110
我想在Javascript中也会发生同样的事情.
在转换为二进制文件之前,您可以使用shift运算符>>>将数字转换为无符号整数:
(~1 >>> 0).toString(2) // "11111111111111111111111111111110"
Run Code Online (Sandbox Code Playgroud)