0

我正在尝试将 Python 实用程序翻译成 Ruby。问题是对python不太了解。

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

if bits&0x10==0x10: 

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

4

3 回答 3

6

唯一的&就是按位和运算。即,bits逐位与 0x10 进行比较,如果两者都有该位置的位,1则结果1为该位置,否则为 0。

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

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

编辑:根据Ruby Operators页面。在“Ruby Bitwise Operators”部分下&,在 ruby​​ 中也可以用作按位运算符,因此您可以在实用程序的翻译中保持原样,它确实应该可以工作。

于 2013-02-19T17:03:44.777 回答
5

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

这个怎么运作

  • & 是按位与。

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

  • bits所以你对曾经发生过的事情做一些明智的决定0b10000

此外,Ruby 支持类似的按位测试结构

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

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

if bits&0x10:
    .......
于 2013-02-19T17:03:10.757 回答
0

& 是二进制位“与”运算符。

0x10 是十六进制的 10。

您可能想在此处阅读 python 文档

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

于 2013-02-19T17:05:14.797 回答