1

我知道bitwise运算符是按位非,意味着 1 变为 0,0 变为 1

但我的问题与以下有关:

var c = 5.87656778;
alert(~c);

警报 -6

var c = 5.87656778;
alert(~~c);

警报 5

有人可以对此有所了解吗?

4

2 回答 2

5

基本上,它通过截断小数部分将数字转换为整数,并对该整数表示执行通常的按位运算。

MDN 对此有一些非常好的文档

 5 in binary is = 00000000000000000000000000000101 =  5
                  --------------------------------
~5 in binary is = 11111111111111111111111111111010 = -6
于 2013-02-20T18:02:16.433 回答
0

它们都适用于 32 位有符号整数。除了零填充右移,>>>它适用于 32 位无符号整数。

因此,任何浮点数都通过截断转换为整数。

于 2013-02-20T18:03:32.700 回答