按位非 (~)

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

语法

~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

规范

浏览器兼容性

BCD tables only load in the browser

参见