javascript - 有效地迭代二进制数并检查 Javascript 中的位值?
问题描述
我需要遍历从 0 到 X 的数字,对于每个数字 i,我需要检查位置 a、b、c、d、e 的位是真还是假。
有没有一种简单的方法可以在 Javascript 中高效地做到这一点?目前我正在考虑手动迭代数字,将它们转换为二进制字符串,然后做string[a] === "0"
一些事情。
解决方案
有一种方法可以做到这一点,您可以使用按位运算符
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
基本上,你有你的 &, | 和 XOR 运算符,您可以使用和组合来获得所需的结果。
例如,如果您想检查数字 2(二进制中的 10)是否在第二个索引中打开了位,您可以使用表达式 2 & 2 > 0。表达式将返回true。
你想&你想检查的数字,只有在你要检查的索引中打开了位的数字,如果你想检查索引3是否打开了位,请使用数字4(100 in二进制)进行比较。
推荐阅读
- javascript - 如何在 svg 中创建此图表上的百分比?
- python - 无法将自定义函数二重唱应用于“DataFrame”对象是可变的,因此它们不能被散列
- python - Groupby 并按 1 列求和,保留所有其他列,并改变一个新列,用 pandas 计算求和行
- javascript - 将 Django 中的 QueryDict 转换为对象数组
- r - dplyr::mutate 根据多个条件和字符串向量(或 tidyselect)传递的相应变量名称创建新变量
- javascript - 重新加载后本地存储重置
- database - 范围分区表上的全局和本地索引方法
- mysql - 子查询返回超过 1 行 - 多选 MySQL
- c# - C# 不包含“GetAwaiter”的定义,最好的扩展方法重载需要“Task”类型的接收器
- asp.net - 使用了命名连接字符串,但在应用程序的配置中找不到名称“tumoDB”。.Net 核心 3.0 REST API