Exemplo de operadores Perl Bitwise

Existem os seguintes operadores Bitwise suportados pela linguagem Perl, suponha que se $ a = 60; e $ b = 13 -

Sr. Não. Operador e descrição
1

&

O operador binário AND copia um bit para o resultado se ele existir em ambos os operandos.

Example - ($ a & $ b) dará 12, que é 0000 1100

2

|

O operador binário OR copia um bit se ele existir no operando eather.

Example - ($ a | $ b) dará 61 que é 0011 1101

3

^

O operador binário XOR copia o bit se estiver definido em um operando, mas não em ambos.

Example - ($ a ^ $ b) dará 49, que é 0011 0001

4

~

O operador de complemento binários é unário e tem o efeito de 'inverter' bits.

Example - (~ $ a) resultará em -61 que é 1100 0011 na forma de complemento de 2 devido a um número binário com sinal.

5

<<

Operador binário de deslocamento à esquerda. O valor dos operandos à esquerda é movido para a esquerda pelo número de bits especificado pelo operando à direita.

Example - $ a << 2 resultará em 240, que é 1111 0000

6

>>

Operador binário de deslocamento à direita. O valor dos operandos à esquerda é movido para a direita pelo número de bits especificado pelo operando à direita.

Example - $ a >> 2 resultará em 15, que é 0000 1111

Exemplo

Tente o exemplo a seguir para entender todos os operadores bit a bit disponíveis em Perl. Copie e cole o seguinte programa Perl no arquivo test.pl e execute este programa.

#!/usr/local/bin/perl

use integer;
 
$a = 60;
$b = 13;

print "Value of \$a = $a and value of \$b = $b\n";

$c = $a & $b;
print "Value of \$a & \$b = $c\n";

$c = $a | $b;
print "Value of \$a | \$b = $c\n";

$c = $a ^ $b;
print "Value of \$a ^ \$b = $c\n";

$c = ~$a;
print "Value of ~\$a = $c\n";

$c = $a << 2;
print "Value of \$a << 2 = $c\n";

$c = $a >> 2;
print "Value of \$a >> 2 = $c\n";

Quando o código acima é executado, ele produz o seguinte resultado -

Value of $a = 60 and value of $b = 13
Value of $a & $b = 12
Value of $a | $b = 61
Value of $a ^ $b = 49
Value of ~$a = -61
Value of $a << 2 = 240
Value of $a >> 2 = 15