条件语句-特定于python if构造



我正在尝试将Python实用程序转换为Ruby。问题是我不太了解python。

实用程序的一个片段包括以下if条件:

if bits&0x10==0x10: 

这是什么意思?比特是一个变量。它是否是某种"缩短"&&",意味着如果位为非零并且的值为0x10?谢谢

&单独是位和运算。Ie,将bits与0x10逐位进行比较,如果两者对于该位置都具有1的位,则结果对于该位置为1,否则为0。

基本上,由于0x10是二进制的10000,这是在检查bits中的第5位是否设置为1

我不太了解ruby,但我的猜测是,它应该有一个位和运算符,它可能也是&。因此,这段特定的代码在ruby中最终会完全相同。

编辑:根据Ruby Operators页面。在"Ruby Bitwise Operators"一节中,&充当了Ruby中的一个Bitwise,因此您可以在实用程序的翻译中保持原样,它确实应该有效。

它实际上检查变量位的第5位是否设置为

的工作原理

  • &是比特式的安定。

  • 0x10是二进制值0b10000 的十六进制

  • 因此,您可以用0b10000 稍微了解一下bits中的内容

此外,Ruby支持类似的结构,用于逐位测试

if (bits&0x10)
    ......
end

注意,正如Tim所提到的,您的Python构造可以简化为

if bits&0x10:
    .......

amp;是二进制位"and"运算符。

0x10是十六进制10。

你可能想在这里阅读python文档

http://docs.python.org/2/reference/expressions.html

最新更新