特定的python如果构造

时间:2013-02-19 17:01:19

标签: python conditional-statements

我正在尝试将Python实用程序转换为Ruby。 问题是不能很好地理解python。

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

if bits&0x10==0x10: 

这是什么意思? bits是一个变量。它是某种“缩短的”“&&”,意味着如果位为非零的值为0x10?谢谢!

3 个答案:

答案 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文档

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