JavaScript 位运算符2025年4月19日 | 阅读 8 分钟 JavaScript 是一种非常强大且流行的编程语言,在 Web 开发中有广泛的应用。它允许开发人员创建动态和交互式内容,这些内容可以在网页中执行,从而提供出色的用户体验。执行各种操作,例如算术、逻辑和按位运算,是 JavaScript 编程语言的主要功能之一。 什么是 JavaScript?JavaScript 是一种解释型、轻量级的高级编程语言。该语言主要用于开发交互式网页、执行客户端脚本以及进行异步通信。与 HTML 和 CSS 一起,JavaScript 是我们今天所知的 Web 开发的第三大支柱。JavaScript 可用于服务器端开发、移动应用程序甚至桌面应用程序开发(得益于所有那些库和框架)。 什么是运算符?我们都知道 运算符,它们是特殊的符号或关键字,用于指示编译器对变量和值执行特定的数学运算。JavaScript 支持多种类型的运算符。 什么是按位运算符?当我们想直接对数字的二进制表示形式应用运算时,我们在 JavaScript 中使用按位运算符。这些运算符将数字视为 32 位整数并操作其各自的位。按位运算在底层编程、优化和二进制数据操作中很常见。 这里有一些运算符
1. 按位 AND (&)按位 AND 运算符接收两个操作数,并逐位进行比较。对于每一位,如果两个位都是 1,则结果为 1,否则返回 0。它用于清除二进制数据中的特定位。 示例因此,下面我们有一个例子来阐明按位 AND 运算符。我们取两个数字 5 和 3。下面是它们的 二进制 表示形式。 5 = 0101 3 = 0011 现在考虑当我们应用按位 AND 时 结果是 1。 代码 输出 Bitwise AND of 5 and 3 is 1 2. 按位 OR (|)按位 OR 运算符接收 2 个数字,比较它们的每一位,并创建一个新数字,如果至少有一个操作数的对应位为 1,则该数字的每一位都设置为 1。如果两个位都为 0,则最终位也为 0。 示例一个理解按位 OR 运算符的例子,我们取 5 和 3。它们的二进制表示形式是 5 = 0101 3 = 0011 当我们执行按位 OR 操作时 结果是 7。 代码 输出 Bitwise OR of 5 and 3 is 7 按位 OR 运算符可以使用按位 OR(|) 运算符组合两个二进制值,并在位级别返回准确的结果。 3. 按位 XOR (^)按位 XOR(异或)运算符比较两个数字的位,创建一个新数字,其中如果操作数的相应位不同,则该位的值为 1。如果相应位相等,则输出为 0。 示例我们可以通过一个例子来理解按位 XOR 运算符。假设我们有两个数字:5 和 3。在它们的二进制形式中 5 = 0101 3 = 0011 当我们执行按位 XOR 操作时 结果是 6。 代码 输出 Bitwise XOR of 5 and 3 is 6 在此示例中,您将了解按位 XOR 运算符如何在 JavaScript 中工作。XOR (^) 运算符比较两个二进制值并返回一个其位不同的值。 4. 按位 NOT (~)按位 NOT 运算符反转操作数的位。它将 0 变为 1,将 1 变为 0。结果,我们得到相应数字的二进制补码。NOT 运算符还会翻转符号位,因此在 JavaScript 的 32 位有符号整数中,结果等于 -(n + 1)。 示例因此,为了理解按位 NOT 运算符,让我们尝试一个例子。假设我们有一个数字 5。它的二进制表示形式是 5 = 00000000000000000000000000000101 (32 位表示) 如果我们执行了按位 NOT 操作 结果是 -6。 代码 输出 Bitwise NOT of 5 is -6 此脚本显示了按位 NOT 运算符在 JavaScript 中是如何工作的。我们使用二进制 1 的补码获得数字的负值,该补码是通过执行 ~ 操作获得的。 5. 左移 (<<)左移运算符将位向左移动指定的次数。它右侧的所有位都用 0 填充,并且数字本质上是每次移动乘以 2。 示例左移运算符的例子。假设我们有一个数字 5。它的二进制表示形式是 5 = 00000000000000000000000000000101 (32 位表示) 当我们向左移动 2 个位置时 结果是 20。 代码 输出 5 left-shifted by 2 positions is 20 这是一个展示 JavaScript 中左移运算符实现的程序。a 的值乘以 2^2,结果为 20。 6. 符号传播右移 (>>)符号传播右移运算符将数字的位向右移动指定的位数。左侧的空位用符号位(正数用 0,负数用 1)填充,从而保持数字的符号。 示例假设我们有一个数字 -5。32 位有符号二进制表示形式是 -5 = 11111111111111111111111111111011 当我们向右移动 2 个位置时 结果是 -2。 代码 输出 -5 right-shifted by 2 positions is -2 JavaScript 中按位运算符的优点1. 高性能与其他算术或逻辑运算相比,按位运算的执行时间更长,因为按位运算发生在硬件级别,因此它们快速而高效。 2. 内存效率当您想节省内存,同时维护标志、权限或相对较小的值时,按位运算允许您直接操作各个位。 3. 底层操作它可以访问字节的底层操作,因此,它可以用于任何需要处理二进制信息的应用程序,例如加密、图像处理等。 4. 代码简洁在讨论某些问题时,按位运算符比其他运算符(如切换位、检查奇偶数或构建简单的哈希算法)更简洁。 5. 控制标志/状态当您想使用一个变量来设置、切换和检查标志时,您应该使用按位运算符,它效果最好。 6. 在算法中有用许多算法依赖于按位运算,例如快速傅里叶变换、某些排序和搜索技术等。 JavaScript 中按位运算符的缺点1. 可读性这意味着按位运算会使代码显得有些笨拙,并且像这样的小代码可能难以阅读,即使它本质上做的事情相同。对于一个不知道它是如何工作的开发人员来说,它会尝试进行按位运算并产生结果。 2. 易出错很容易出错,例如不正确的移位,比如使用错误的掩码或符号。 3. 用途有限尽管按位运算符功能强大,但在高级应用程序编程中,只有少数地方可以很好地使用它们,这降低了它们对大多数程序员的有用性。 4. 符号处理请注意,数字被视为 32 位有符号整数,这会导致对大数字或负数产生一些不寻常的行为。 5. JavaScript 支持有限JavaScript 缺乏无符号 32 位整数,这使得有效执行无符号按位运算更加困难。 6. 调试困难JavaScript 中没有无符号 32 位整数,因此无符号按位运算更加困难。 7. 缺乏可移植性特别是当涉及多步标志时,按位运算难以调试。 JavaScript 中按位运算符的用例1. 权限管理如果是权限或标志(例如,读、写、执行),则可以将它们作为单独的位保存在一个整数中。使用按位运算符,您可以检查、设置或切换这些权限,而且效率很高。 2. 数据压缩因此,当您想将一堆小数据值打包到同一个整数中以节省内存时,按位运算非常有用。 3. 奇偶校验(奇数或偶数)要检查一个数字是奇数还是偶数,可以通过按位运算使用最低有效位 (LSB) 测试。 4. 无需临时变量即可交换值在交换方面,按位 XOR 运算符可以创造奇迹。此运算符使我们无需使用第三个变量即可交换两个值。 5. 加密和哈希精确度至关重要,按位运算对于任何加密、解密和哈希算法都至关重要。 6. 图像处理在图像处理中,按位操作对于掩码、混合和更改像素值很有用。 7. 性能优化在性能至关重要的应用程序中,我们可以使用按位运算代替算术或逻辑运算,以获得更高效的计算。 8. 循环移位这模拟了由按位移位运算符实现的循环移位,并实现了许多算法和硬件模拟所需的数据结构。 结论按位运算符乍一看可能很复杂,但对于一些与位相关的操作,如编码/解码或存储优化,它们确实非常有帮助。如果您掌握了这一系列运算符,它们将对您的 JavaScript 编程大有帮助。 |
我们请求您订阅我们的新闻通讯以获取最新更新。