按位非 (~)

翻译不完整。 请帮助我们翻译这篇文章!

按位非运算符(~),反转操作数的位。

语法

~a

描述

操作数被转换为32位二进制表示(0和1)。超过32位的数字将丢弃其最高有效位。如下例子中,超过32位的整数转换为32位整数:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

第一个操作数中的每个位都与第二个操作数中的相应位配对:第一位到第一位,第二位到第二位,依此类推。

将运算符应用于每对位,然后按位构造结果。

非运算的真值表:

a NOT a
0 1
1 0
 9 (base 10) = 00000000000000000000000000001001 (base 2)
               --------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)

按位非运算时,任何数字x的运算结果都是-(x + 1)。例如,〜-5运算结果为4

Note that due to using 32-bit representation for numbers both ~-1 and ~4294967295 (232-1) results in 0.

请注意,由于对数字~-1~4294967295 (232-1) 使用32位表示形式,结果均为0。

例子

使用按位取反

~0;  // -1
~-1; // 0
~1;  // -2

规范

Specification
ECMAScript (ECMA-262)
Unary NOT expression

浏览器兼容性

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Bitwise NOT (~a)Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

参见