什么'&'在C / C ++中做什么,它在perl中的等价运算符是什么?

时间:2011-08-18 08:17:44

标签: c++ c perl

我正在编写一个perl实现的协议,其规范是针对C / C ++提供的,但我不太了解C。

条件if ((flags & 0x400) != 0)是什么意思?我如何在perl中做到这一点?

if ($flags == "\x400")是否正确?

5 个答案:

答案 0 :(得分:6)

&是一个按位AND。请参阅Bitwise operators

因此,flags被视为一系列位,然后您将其与具有您想要检查的位集的东西进行对比。如果结果为非零,则设置该位,否则未设置您正在查看的位。特别是,在您的示例中,0x400 = 0100 0000 0000用于检查flags中是否将第11位设置为(1)。

通常,您不会使用0x400而是使用命名常量,因此很清楚该位代表什么。

所以if ($flags == "\x400")不正确。请参阅Working with bits in Perl

可以在Linux file permissions中看到位掩码的常见示例。

答案 1 :(得分:4)

它是C \ C ++和Perl中的按位AND运算符。

答案 2 :(得分:3)

&运算符执行按位AND。在您的情况下,if ((flags & 0x400) != 0)会检查flags变量的第11位是否未设置为0. You can do bitwise operations in Perl, too

答案 3 :(得分:2)

答案 4 :(得分:2)

&按位和运算符,基本上这是一个测试,以查看flags中是否设置了特定位。请参阅此处的perl等效项:http://perldoc.perl.org/perlop.html#Bitwise-And