我正在尝试将Python实用程序转换为Ruby。 问题是不能很好地理解python。
该实用程序的一个片段包括以下if
条件:
if bits&0x10==0x10:
这是什么意思? bits是一个变量。它是某种“缩短的”“&&”,意味着如果位为非零且的值为0x10?谢谢!
答案 0 :(得分:6)
仅&
是按位和操作。即,bits
与0x10逐位进行比较,如果两个位置都有1
,则该位置的结果为1
,否则为0。
基本上,由于0x10是二进制10000,这是检查bits
中的第5位是否设置为1
。
我不太了解ruby,但我的猜测是,它应该有一个按位和运算符,它也可能是&
。因此,这段特殊的代码最终会在ruby中完全相同。
编辑:根据Ruby Operators页面。在“Ruby Bitwise Operators”部分下,&
也是一个按位和红宝石,所以你可以保留它在你的实用程序的翻译中,它确实应该工作。
答案 1 :(得分:5)
它实际上检查变量位的第5位是否已设置
工作原理
&安培;是按位的。
0x10是二进制值0b10000
所以你用bits
0b10000
中的内容进行了一些明智的了解。
此外,Ruby支持用于逐位测试的类似构造
if (bits&0x10)
......
end
请注意,Tim提到,您的Python构造可以简化为
if bits&0x10:
.......
答案 2 :(得分:0)
&安培;是二进制按位“和”运算符。
0x10是十六进制10。
您可能需要阅读此处的python文档