J 是否有内置的按位异或原语?
我知道 J 有一个类似于 xor ~:
的原语,但这实际上是一个 不等于 (!=)
我可以通过说让它像按位异或一样工作:xor =: 4 : '#.((#:x)~:(#:y))'
在动词定义中,但这仅在数字的二进制表示相同时有效长度。除了创建一个完整的动词来使用 if 语句来创建相同大小的列表以进行按位异或之外,我还能做些什么吗?
如果您想知道,我这么问是因为我想在 J 中重新创建我在 Java 中工作的 Nim 求解程序。
I know J has a primitive that works like xor ~:
, but this is really a not equal to (!=)
I can make it function like a bitwise xor by saying:xor =: 4 : '#.((#:x)~:(#:y))'
within a verb definition, but this only works when the binary representations of the numbers are the same length. Is there anything I can do short of making a full-out verb that uses if statements to make the lists of the same size to make a bitwise xor.
In case you're wondering, I'm asking because I want to recreate my Nim-solving program that I got working in Java in J.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
J 确实有一个原语可以让您轻松按位工作。主要是
b.
及其其文档,位于字典给出了详细信息。您特别感兴趣的异或动词是6 b.
使用示例也可以在 Rosetta 代码条目中找到,按位运算。
J does have a primitive that lets you easily work bitwise. That primary is
b.
and its documentation in the Dictionary gives details. The xor verb you're particularly interested in is6 b.
Examples of use can also be found in the Rosetta Code entry, Bitwise Operations.