按位与 (&) 运算符执行什么数学函数(JS)?

2023-12-02

一点背景知识,当我试图解决 javascript 问题以找到所有可能的子集时,我正在查看另一篇 SO 帖子。我不是在问 JS 挑战,而是问它为什么存在以及它有什么数学意义?

这是代码的复制粘贴这个帖子

var arr = [1, 2, 3];

function generatePowerSet(array) {
  var result = [];
  result.push([]);

  for (var i = 1; i < Math.pow(2, array.length); i++, result.push(subset))
    for (var j = 0, subset = []; j < array.length; j++)
      if (i & Math.pow(2, j))
        subset.push(array[j]);

  return result;
}

console.log(generatePowerSet(arr));

我不明白正在完成什么if (i & Math.pow(2, j))线。这Mozilla 文档表示它对每个位对执行 AND 比较。为什么它是相关的?

当我说相关时,我的意思是,例如使用左移,执行 a a << bb 是1。看不懂什么数学函数&在这种情况下确实如此。


The expression i & Math.pow(2, j) gives a non-zero value when the jth bit in i is 1 (counting from the least significant bit, which is the 0th bit).

这可以通过示例得到最好的解释。比方说i某一时刻为10;二进制:1010。现在让j为 0。则:

     i & Math.pow(2, j)
 ==  10 & Math.pow(2, 0)
 ==  10 & 1
 ==  0b1010 & 0b0001
 ==  0b0000

第二个值 (0b0001) 的作用是过滤:它从第一个值中过滤掉一位。看看什么时候会发生什么j is 1:

     i & Math.pow(2, j)
 ==  10 & Math.pow(2, 1)
 ==  10 & 2
 ==  0b1010 & 0b0010
 ==  0b0010

The if因此,对于这个值,条件为真j.

As i有两个 1 位,将出现两次if对于该特定值,条件为真i.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按位与 (&) 运算符执行什么数学函数(JS)? 的相关文章

随机推荐

  • 相当于 Android Studio 中的 Clean & build?

    今天 当从 Android Studio 运行应用程序时 它不是根据我的最新代码构建的 我找了一个清洁和构建选项 但我找不到 所以我的问题是 Android Studio 相当于什么清洁和构建 Android studio是基于Intell
  • 使用远程 FTP 原子包和私钥发出与服务器的连接

    我正在尝试使用原子包 Remote FTP 并使用私钥连接到我的服务器 我在服务器上设置了 SSH 密钥 并且可以使用 putty 成功连接 私钥保存在我的项目文件夹中 并且我有一个现有的 ftpconfig 文件 没有私钥 当我替换文件内
  • 在两个 ggplot 直方图上显示平均值和中位数

    我是新的 stackoverflow 用户 目前无法对原始帖子发表评论来提问 我发现了以前的 stackoverflow 答案 https stackoverflow com a 34045068 11799491 我想知道如何在此图表中添
  • 的巨大高度值不会阻止截断

    我正在尝试申请
  • 检测拨出电话,使用真实设备发出问题

    我有一个奇怪的问题 为了检测拨出电话 我注册了一个广播接收器android intent action PHONE STATE 当状态变为摘机时 则开始通话 它似乎在模拟器上工作 调试器实际上达到了一些代码 但它在真实设备 Acer Liq
  • 程序集 8086 光标放置

    我想将光标放在 论文 之后 等待输入 ENTER 然后将其放在 作者 之后 这两个句子都是打印的已定义变量 insert db Insert new paper 0 0Ah 0Ah 0Ah 0Dh inserttitle db Title
  • AWS代码管道错误致命错误:接近堆限制的无效标记压缩分配失败-JavaScript堆内存不足

    我有在 aws 代码管道上运行的角度应用程序 突然它开始抛出此错误 我做了很多这样的事情 包括 node max old space size 8192 等 但没有任何方法可以解决此错误 有人可以帮我解决这个问题吗 To disable t
  • Selenium Python 在 HTTPS 网站上验证浏览器登录 pupup 对话框

    Folks 我正在开发一个每天运行一次的抓取脚本 我需要重新验证我的帐户 首先我必须登录 然后只有我才能看到该页面 就像正常的页面登录和废弃一样 这不起作用 阅读文章并按照大多数博客和论坛的建议使用下面的代码 这仍然不起作用 It s an
  • 缺少 OpenMP 功能:线程优先级

    任何人都想想吧 OpenMP 具有调整 CPU 能力来处理哑铃的功能 在我对 openmp 的研究中 我们无法设置线程优先级来以强大的力量执行块代码 5 只有一种方法 beginthreadex 或带参数的 CreateThread 函数
  • 如何在javascript中将嵌套集合转换为嵌套数组?

    有以下数据 no 1 name ELECTRONICS depth 0 no 2 name TELEVISIONS depth 1 no 3 name TUBE depth 2 no 4 name LCD depth 2 no 5 name
  • 尝试获取 singleValueExtendedProperties 时收到 400 和 500

    尝试向日历对象添加扩展属性 我可以使用以下有效负载创建日历 Ruby 语法 有效负载以 JSON 形式发送 name build calendar name singleValueExtendedProperties id String S
  • 如何使用 viewmodel 单例进行活动?

    MyApp需要在整个上下文中保存一个User对象 A B C活动的xml使用这个User对象 当A编辑User时 我想要B和C通知Change 如何使用数据绑定 livedata和viewModel处理这个问题 以前我让User class
  • Python Selenium 更改文本大小(缩放?设置?...)

    我有一个网页 我需要先截屏 然后使用 OCR 解析出里面的文本 如果放大 Mac command OCR 的性能会显着提高 所以我想知道如何在Python中使用selenium来放大 缩小 有一个类似的post但他们只有Java和C 的实现
  • 在 colorbox 中的图像下方添加 div

    使用 PHP 和 jQuery 目前使用 Colorbox 显示图像幻灯片 我想在每个图像下方包含一个 DIV 当每个图像显示新内容时会更新 可用于展示相关内容 评论功能等 四处研究但尚未找到任何答案 有人以前这样做过或有任何线索吗 我想我
  • 检测应用程序是否从应用程序“外部”启动/恢复

    我目前正在为应用程序构思一项功能 我希望有一种通用方法 方法来检测应用程序本身是否已从 启动或恢复outside 该应用程序 Outside 在这种情况下 意味着 应用程序由启动器图标启动 恢复 通过按导航栏 按键上的 应用程序按钮 来启动
  • 在 Teams 平台上更新 BotFramework v4 中的活动

    我有一个使用 NodeJS 使用 Bot Framework v4 开发的机器人 并部署在 Teams 中的多个渠道上 有没有办法更新机器人发送的消息 我尝试在 BotFrameworkAdapter 中实现 updateActivity
  • cx_Freeze-导入错误:无法导入名称设置

    我使用的是 Windows 7 机器 cx Freeze 4 3 1 和 Python 3 3 Python 和 cx Freeze 都是 32 位版本 我编写了一个 setup py 脚本 如下所示 import sys from cx
  • Javascript如何转义字符

    我想在 div 中插入一些 html 假设 div div 我在用 Sag html data 为了将数据插入到该 div 中 但这是我的数据的问题 table table
  • android 中有安装事件吗?

    是否有一些事件 接收器或用于处理安装后或安装后直接执行的首次执行 或者我需要它根据偏好进行模拟吗 有的是ACTION PACKAGE ADDED广播意图 但正在安装的应用程序不会收到此意图 因此 检查是否设置了首选项可能是最简单的解决方案
  • 按位与 (&) 运算符执行什么数学函数(JS)?

    一点背景知识 当我试图解决 javascript 问题以找到所有可能的子集时 我正在查看另一篇 SO 帖子 我不是在问 JS 挑战 而是问它为什么存在以及它有什么数学意义 这是代码的复制粘贴这个帖子 var arr 1 2 3 functi