问题标签 [bitwise-and]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bitwise-operators - 就十六进制结果而言,按位和逻辑与/或
所以如果我有x = 0x01
并且y = 0xff
我有x & y
,我会得到0x01
。如果我这样x && y
做了,我仍然会得到0x01
,但计算机只是说它是真的,如果它有什么比0x00
?我的问题是,无论按位还是逻辑与/或,运算后的位是否相同,但计算机只是以不同的方式解释最终结果?换句话说,& 和 &&(同样是 | 和 ||)运算结果的十六进制值是否相同?
编辑:在这里谈论C
algorithm - 与最大 AND 值配对
给定一个非常大的整数数组,其中元素可以达到 10^9,我如何找到具有最大 AND 值的对。我目前的方法是计算所有可能的对并遍历它并找到最大值,但是它非常慢。还有其他方法吗?
javascript - javascript 按位并产生奇怪的结果
在我的一个应用程序中,为了简化逻辑/繁重的数据库内容,我创建了一种依赖于 javascript 按位“&”运算符的机制。然而,这在某些情况下似乎表现得很奇怪。
到目前为止一切都很好..但是当我尝试这样做时:
我得到奇怪的结果,而不是 0 或 1100。我发现这是由于某些“特定基础中的 javascript 解释”的东西而发生的,但是我想知道是否有解决方案。
assembly - 测试 $1,%al 在汇编中做了什么?
所以 %eax = x 中有一个值。
我有以下几行:
所以我知道它正在做 1&%al 然后如果相等则跳转。我的问题是什么是 %al 给定 %eax 是 x (我知道 %al 是最低有效字节。我想知道它在 x 方面是什么)。它等于1是什么意思?
c# - 按位运算性能,如何提高
我有一个简单的任务:确定将某个数字(字节数组长度)编码为字节数组并编码最终值(实现本文:编码长度和值字节)需要多少字节。
最初我写了一个完成任务的快速方法:
这是一个旧代码,并且以一种糟糕的方式编写。
现在我正在尝试使用按位运算符或BitConverter
类来优化代码。以下是按位编辑的示例:
和BitConverter
类的最终实现:
所有方法都按预期工作。我使用了Stopwatch 类页面中的示例来衡量性能。性能测试让我感到惊讶。我的测试方法执行了 1000 次运行该方法来编码具有 100 000 个元素的字节数组(实际上,只有数组 Sixe),平均时间是:
- 编码——大约 200 毫秒
- 编码 2——大约 270 毫秒
- 编码 3 -- 大约 320 毫秒
我个人喜欢 method Encode2
,因为代码看起来更具可读性,但它的性能并不是那么好。
问题:您会建议什么来提高Encode2
方法性能或提高Encode
可读性?
任何帮助将不胜感激。
============================
更新:感谢所有参与此主题的人。我考虑了所有建议并最终得到了这个解决方案:
最终,我从列表转移到了固定大小的字节数组。现在,针对同一数据集的平均时间约为 65 毫秒。似乎列表(不是按位运算)给我的性能带来了重大损失。
vb.net - 为什么具有常量的大 ULong 数的按位与运算符会导致溢出异常?
此代码编译成功,但在执行期间会在 Visual Studio 2013 中导致 System.OverflowException:
你能解释一下为什么会这样吗?如果变量的值很小(例如 5),则不会发生异常。
PS变量的三个最高有效位全为零。
c# - 查找按位运算结果的最有效方法
我有一些用另一种语言编写的代码,它使用枚举和枚举中的值列表,然后使用按位从枚举中获取值列表的整数。
因此,如果我的列表中有 HELLO 和 SO,我会得到一个返回值
我正在尝试找出获取该整数并返回包含的枚举列表的最有效方法。
php - 按位和在 PHP 中
我是 PHP 的新手。我读到这将在 PHP 中dechex(255)
给出相应的十六进制值。ff
我需要 的十六进制值-105
。我尝试dechex(-105)
并得到了结果ffffff97
。但我只想97
做一些事情。
在 Java 中,我知道有点明智的操作 with0xff
给了我们结果97
,即(byte)-105 & (byte)0xff = 0x97
.
请在 PHP 中找到解决方案,就像我在 Java 中所做的那样。
php - 按位 AND 运算符无法按预期工作
我使用二进制代码来处理我在数据库中的覆盖,但现在我需要查找规则是否匹配,我有遵循规则。
- 1 = 解锁标题
- 2 = 解锁描述
- 4 = 解锁价格
- 8 = 解锁库存
当我使用 php 时,我尝试像 MySQL match 一样使用它:
我期望它的标题和价格是解锁,而 desc 和股票是锁定,但是出现问题并且 php 不会接受像 MySQL 这样的二进制文件,有人可以告诉我我在这里做错了什么吗,我仍然是处理二进制代码的新手规则。
c - C表达式中模运算和按位与之间的联系
我遇到了一个 C 代码片段,它使用按位逻辑执行漂亮的模数运算:
c 的值是 b 大于 a+b 的最小倍数(根据 John Bollinger 的回答进行了编辑)。我试图向自己解释这是如何工作的(我对模算术和 & 操作之间的关系有一个模糊的理解),但缺乏洞察力。另一方面,看起来我可以将其表达为
这个表达很容易理解。此外,模块化的外观和?操作表明各个部分可以表示为按位逻辑,并以某种方式简化为顶部的表达式。但是怎么做?如果有人想试一试,我会把它留作练习(这不是家庭作业)。实现不需要在 C 中,如果有一个在线参考解释了这一点,欢迎您提供它,但不会是一个完整的答案。我想以清晰的步骤看到从底部到顶部表达式的过渡......
评论 此链接表明当 b 是 2 的幂时这可能适用。此其他链接解释了按位 & 不分布在加法上。
假设在表达式...&(-b)
中 ,(-b)
可以替换为(nums(int)-b)
,其中nums(int)
是表示中可能的整数的总数。
随意指定您最喜欢的编译器/C 版本。
示例代码:
样本输出: