问题标签 [binary-operators]

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.

0 投票
3 回答
6243 浏览

c - c中是否有既是一元又是二元的运算符?

c中是否有既是一元又是二元的运算符?这个问题是在一次采访中被问到的。

0 投票
3 回答
353 浏览

java - 在 Java 中使用“Integer.toBinaryString()”时处理填充

我想为这个问题实施 Method2 http://www.geeksforgeeks.org/find-two-non-repeating-elements-in-an-array-of-repeating-elements/但我有一个问题。我不知道如何将数组中的数字分成两组(一组在其二进制表示中的指定位置有'1',而那些没有)我认为我必须使用Integer.toBinaryString()数组中的每个数字以下方法:

但问题是,并非每个数字在其二进制表示中都具有相同的长度,并且该方法无法正常工作。我该如何处理?即我该如何处理填充?

0 投票
1 回答
1882 浏览

c++ - C++模拟数字逻辑,实现友元二元运算符

介绍

我正在做一个实验来模拟一些数字逻辑。(逻辑门。)

我有一个componentandgate继承的抽象基类。一个类port也继承自component. 类port有一个成员;PORTSTATE state.

PORTSTATE是一个枚举类,其值包括HIGHLOWHIGH_IMPEDANCEUNDEFINED等。(这只是背景信息。)

模拟通过将输入端口的状态更改为某个逻辑门来工作。门连接(使用指针)到一个类Net,该类又具有指向该网络上所有连接逻辑的指针。这允许根据需要更改其状态已更改的门的所有下游。考虑由于输入的变化而导致逻辑门的状态发生变化,使用其输出所连接的网络,可以相应地更新序列后面的任何门。

我的问题是如何使用友元函数和二元运算符(例如operator&.

问题示例

考虑一个与门,具有 1 个输出端口和 2 个输入端口。端口是代表门的类的成员,它们附有一些信息,例如它们的方向以及它们的状态。

调用一个函数来根据输入计算门的输出。该函数是门类的成员函数。例如,与门有这个函数的一个版本。

最初,我通过以下方式实现了该功能。

重要的operator&是使用 2 个输入门的参数调用 ;input_port_ainput_port_b作为论据。

然后我在端口类中实现了这个操作符。

但我有一个严重的问题。您不能将 2 个端口“与”在一起。端口是一个抽象概念,是一种跟踪哪些电流(或等效地施加了哪些电压)到哪些输入或输出的方法。更物理的解释是,端口是一小段电线,有一些电流流过。电流不是“HIGH”就是“LOW”,但肯定没有办法将这两个对象“与”在一起。我认为大多数工程师和物理学家可能会因为这一点而惊恐地看着这段代码。

所以“明显”的解决方法是将operator&And 门作为一个友好的函数。

然而,那些清醒的人会意识到这也是一个坏主意,因为这样就只能将&两个与门实例放在一起,这当然没有意义,也不会计算出正确的结果!(它甚至可以计算出合理的结果吗?不太可能。)

*(完全错误)

考虑;

所以是的,这就是问题所在,我想不出解决方案。尽管在某种意义上是概念性的,但使用第一种方法并能够将两个线“与”在一起似乎是一个严重缺陷的想法。

可能 - 但不太可能 - “解决方案”

我能想到的唯一一件事就是完全放弃运算符,并在与门的Update()函数中手动编写所有内容......但是这种避免了 C++ 的优点,即你可以为这些事情编写运算符。

请注意,如果没有这样的东西PORTSTATE并且如果使用了替换bool,那么就不会有问题,因为可以简单地将 2 个布尔类型&'ed 在一起。但是,这会Update()变成这样,这也不是很好。(注意成员访问是公开的。)

可以说更好的是保护数据:(但由于函数调用,它“看起来”更糟,也许?)

这也引入了仅存在 2 个状态的问题。没有什么可以处理未定义状态或高阻抗状态等。

所以我被困住了,没有想法。

0 投票
1 回答
143 浏览

c++ - C++ 中的右移给出不寻常的结果(无符号 64 位)

我正处于可怕的位移世界中。我有以下代码:

我正在转移这个号码:140638023551944 >> 5。

根据http://www.binaryhexconverter.com/decimal-to-binary-converter的 140638023551944 的二进制表示是

1000011000011111011101000111

右移 5,我预计:0000010000110000111110111010

但相反,我得到 4394938235998,即 111111111101000110101110110111110001011110。

在我看来,这个数字与原来的数字几乎没有任何关系。我看不到另一个存在的模式。这很奇怪。

代码大致如下:

“地址”填充了正确的整数 140638023551944。我已经验证过了。

这是什么奇怪的行为?它与这个模拟器一致: http: //www.miniwebtool.com/bitwise-calculator/bit-shift/ ?data_type=10&number=140638023551944&place=5&operator=Shift+Right !但我很确定右移不应该那样工作!

0 投票
1 回答
57 浏览

c - 在 c 中对二进制字符串进行 OR 操作,输出一半错误

我不知道错误是什么,但是or对字符串的每个字符都没有成功操作。

0 投票
3 回答
607 浏览

python - Numpy 中没有结构化数组的二元运算符?

好的,所以在阅读了关于 numpy 结构化数组的教程之后,我可以创建一些简单的示例:

(我的预期用例将包含三个以上的条目,并且将使用非常长的一维数组。)所以,在我们尝试执行一些基本数学之前,一切都很顺利。我收到以下所有错误:

显然,即使是最简单的结构化数组也不支持简单的运算符(+、-、*、/)。还是我错过了什么?我应该看其他一些软件包(不要说 Pandas,因为这完全是矫枉过正)?这似乎是一个明显的能力,所以我有点傻眼。但是在网上很难找到任何关于这个的喋喋不休。这不会严重限制结构化数组的有用性吗?为什么有人会使用结构数组而不是打包到字典中的数组?是否有技术原因导致这可能难以解决?或者,如果正确的解决方案是执行繁重的重载工作,那么如何在保持操作快速的同时完成呢?

0 投票
1 回答
1463 浏览

java - Java 8 流并行减少 BiFunction 累加器

我正在学习 Java 8。我要面对的最困难的事情是 Parallel Reduction。这是我正在研究的用户@Stuart Marks 的示例代码。

通话

这会产生正确的结果,但后来我检查了 reduce 方法的签名

如果代码类似于:

我不明白如何:

可以转换成BiFunction

我的理解是这样的:

是把它转换成类似的东西

可以转换成BinaryOperator. 我的朋友@Stuart Marks 说

这些方法匹配函数参数以减少,因此我们可以使用方法引用。

0 投票
1 回答
1339 浏览

if-statement - Modelica“解决错误:重载二元运算符不匹配”

我正在使用 Dymola 2014 (Modelica) 并尝试编写模型的代码。我无法“检查”模型,Dymola 给了我以下信息。使用 Dymola 的人告诉我,这可能是来自缺少“其他”的问题,但我没有看到任何缺失。

每个“if”开头的条件 xxx.activePort 来自代码中的 stateGraph 循环。请注意,并非所有代码都在这里,但如果需要,我可以发布它。检查只返回那部分代码,所以我认为问题就在这里。您可能还注意到整个代码包含方程式和算法部分。下面的代码是方程式部分的一部分。

我是 Modelica 的菜鸟,所以它可能很简单,但我没有找到任何东西可以解决我在互联网上的问题。

谢谢 !

罗曼

0 投票
2 回答
10562 浏览

c++ - C++ - 如何使用reference_wrapper的向量

我正在尝试重构使用指针的寻路算法的一部分以不使用指针。不幸的是,我对参考资料并不了解。我得到错误:Invalid operands to binary expression ('std::__1::reference_wrapper<Tile>' and 'const std::__1::reference_wrapper<Tile>')

我也不知道那是什么意思。我的代码在下面,我可以收集到它来自该行:openList.erase(std::find(openList.begin(), openList.end(), current));但我不确定如何解决这个问题。

编辑:发布sortF

更新:根据建议,我已将函数更改为使用指针而不是引用。它似乎正在工作,但在它完成之前我还有更多要实施。

0 投票
1 回答
5801 浏览

c# - 为什么 C# 编译器将这个 != 比较翻译为 > 比较?

我纯属偶然发现 C# 编译器转换了这个方法:

…进入这个CIL

…或者,如果您更喜欢查看反编译的 C# 代码:

怎么会!=被翻译成“ >”?