JavaScript 按位取反运算符 (~) 详解与计算原理

作者:小括号

时间:2026-10-28

浏览:165

本文详细介绍JavaScript中按位取反运算符~的用法。该运算符将操作数转换为32位有符号整数,并对二进制位进行非运算(0变1,1变0)。通过具体示例解析~5的计算过程,展示二进制补码机制及负数转换逻辑,帮助开发者深入理解位运算底层原理。

文章目录

JavaScript 按位取反运算符 (~) 详解与计算原理

代码如下:

result = ~ 【数字】

所有一元运算符(包括~)在计算表达式值时遵循以下规则:

代码如下:

1、若操作数为 undefined 或 null,则抛出运行时错误。
2、将对象转换为字符串。
3、若可能,将字符串转换为数字;否则抛出运行时错误。
4、布尔值被视为数字(false 为 0,true 为 1)。

运算符最终作用于上述转换后的数字结果。

~ 运算符查看表达式的二进制表示,并执行位非运算。

若表达式中某一位为 1,结果中该位变为 0;若为 0,则变为 1。

以下示例演示位非 (~) 运算符的用法,涉及二进制表示十进制负数的过程。若不熟悉此概念,建议先阅读《十进制负数转换为二进制、八进制、十六进制》。

代码如下:

var temp = ~5;
/*
5 的二进制表示为 101,补全至 32 位:
00000000000000000000000000000101
执行按位取反操作:
11111111111111111111111111111010
由于 32 位二进制数的最高位(符号位)为 1,该结果为负数。将其转换为十进制负数需先求反码:
00000000000000000000000000000101
随后加 1:
00000000000000000000000000000110
转换为十进制为 6,加上符号即为 -6。
*/
alert(temp);
// 弹出【-6】

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章