Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. 表达式和运算符
  5. 按位非(~)

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

按位非(~)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

按位非运算符(~)将操作数的位反转。如同其他位运算符一样,它将操作数转化为 32 位的有符号整型。

尝试一下

const a = 5; // 00000000000000000000000000000101const b = -3; // 11111111111111111111111111111101console.log(~a); // 11111111111111111111111111111010// Expected output: -6console.log(~b); // 00000000000000000000000000000010// Expected output: 2

语法

js
~a

描述

操作数被转换为 32 位有符号整型,并以一系列比特(0 和 1)表示。超过 32 位的数字将丢弃其最高有效位。如下例子中,超过 32 位的整数将转换为 32 位整数:

Before: 11100110111110100000000000000110000000000001After:              10100000000000000110000000000001

运算结果的每一位数都由操作数相应位反转而来。

NOT 运算的真值表如下所示:

aNOT a
01
10
 9 (base 10) = 00000000000000000000000000001001 (base 2)               --------------------------------~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)

32 位有符号整数操作数根据补码运算规则进行反转,也就是说,最高有效位表示负数。

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

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

示例

使用按位取反

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

规范

Specification
ECMAScript® 2026 Language Specification
# sec-bitwise-not-operator

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp