JavaScript 按位取反运算符 (~) 详解与计算原理
作者:小括号时间:2026-10-28 07:34:31浏览:166
本文详细介绍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】作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
