5

可能重复:
按位不理解 javascript

我在这里找到了它:下面的前端面试问题问题。这个代码~~3.14会返回什么?

我在谷歌上搜索,但没有找到任何关于此的内容。

4

3 回答 3

5

~是JavaScript(以及 C/C++ 和其他语言)中的按位补码运算符。您可以在此处找到更多详细信息:按位补码 (~) 运算符如何工作?

在这种情况下:

  • 3.14从浮点数转换为整数,所以变成3.
  • ~3-4因为二进制补码表示。
  • 然后~(-4)变成3

基本上,对于具有二进制补码表示的整数,~n等于-n-1

于 2012-09-26T06:06:21.993 回答
5

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

基本上〜3.14与〜3相同,即二进制的〜011 => 100或以10为底的4。〜4或〜100是以10为底的011或3。

于 2012-09-26T06:00:54.583 回答
5

波浪号在将输入转换为 32 位整数后对输入执行按位“非”。

来自MDN

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

在你的情况下:

  ~~3.14
= -((~3.14) + 1)
= -(-(3.14 + 1) + 1)
= -(-(3 + 1) + 1)
= -(-4 + 1)
= -(-3)
= 3
于 2012-09-26T06:01:33.907 回答