在javascript中使用~~有什么用?

时间:2012-09-26 05:56:03

标签: javascript

  

可能重复:
  Understanding javascript bitwise NOT

我在这里找到了:front-end-interview-questions问题如下。 这段代码~~ 3.14会返回什么?

我在google上搜索但没有发现任何内容。

3 个答案:

答案 0 :(得分:5)

它将返回3. ~表示JavaScript中的按位NOT运算符。

基本上~3.14与~3相同,其在二进制中是~011 =>基数为10或4。 基数10中~4或~100为011或3。

答案 1 :(得分:5)

~是JavaScript(以及C / C ++和其他语言)中的按位补码运算符。 您可以在此处找到更多详细信息:How does the bitwise complement (~) operator work?

在这种情况下:

  • 3.14从浮点转换为整数,因此它变为3
  • 由于Two's Complement表示,
  • ~3-4
  • 然后~(-4)变为3

对于具有Two's Complement表示的整数,基本上~n等于-n-1

答案 2 :(得分:4)

波形符在将输入转换为32位整数后对输入执行bitwise NOT

来自MDN

  

按位注意任何数字x都会产生-(x + 1)。例如,~5会产生-6

在你的情况下:

  ~~3.14
= -((~3.14) + 1)
= -(-(3.14 + 1) + 1)
= -(-(3 + 1) + 1)
= -(-4 + 1)
= -(-3)
= 3