【JavaScript】位运算符 ~ 的作用详解

JavaScript 作为一门动态语言,提供了多种运算符,其中 位运算符(Bitwise Operators) 是一组较少被使用但非常强大的运算符。本文将深入介绍 ~(按位取反)运算符的作用、使用场景以及其在 JavaScript 开发中的实际应用。

一、~(按位取反)运算符简介

1. 什么是 ~

~ 是 JavaScript 的 按位取反(Bitwise NOT) 运算符,它对数值的 每一位 进行翻转,即:

  • 0 变成 1
  • 1 变成 0

这个运算符的行为基于 32 位有符号整数 的二进制表示。它适用于 整数,但在 JavaScript 这种弱类型语言中,它也可以用于 隐式转换,甚至可以用于一些 特殊的技巧

2. ~ 运算符的数学公式

在 JavaScript 中,~x 等价于:

~x = -(x + 1)

也就是说,~ 运算的结果是 负数,其值比原数字的相反数小 1。

示例:

console.log(~0);   // -1
console.log(~1);   // -2
console.log(~-1);  // 0
console.log(~5);   // -6

3. 为什么 ~x 等于 -(x + 1)

让我们看一个 5 的二进制表示

5  = 00000000 00000000 00000000 00000101  // 32 位二进制
~5 = 11111111 11111111 11111111 11111010  // 取反

在 JavaScript 的 二进制补码 规则下:

  • 最高位 1 表示负数
  • 负数的二进制存储方式是 补码

取反后,11111111 11111111 11111111 11111010补码表示 下的十进制数就是 -6,因此 ~5 = -6

二、~ 运算符的应用场景

虽然 ~ 不是最常见的运算符,但它在某些场景中可以带来 简洁高效 的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter-Lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值