PHP | Operadores bit a bit

Los operadores Bitwise se utilizan para realizar operaciones a nivel de bit en los operandos. Los operadores se convierten primero a nivel de bits y luego se realiza el cálculo en los operandos. Las operaciones matemáticas como la suma, la resta, la multiplicación, etc. se pueden realizar a nivel de bit para un procesamiento más rápido. En PHP, los operadores que trabajan a nivel de bit son:

  • & (Y bit a bit): Este es un operador binario, es decir, funciona en dos operandos. El operador AND bit a bit en PHP toma dos números como operandos y hace AND en cada bit de dos números. El resultado de AND es 1 solo si ambos bits son 1.

    Sintaxis :

    $First & $Second
    
    This will return another number whose bits are 
    set if both the bit of first and second are set.
    

    Ejemplo:

    Input: $First = 5,  $Second = 3
    
    Output: The bitwise & of both these value will be 1. 
    
    Explanation:
    Binary representation of 5 is 0101 and 3 is 0011. 
    Therefore their bitwise & will be 0001 (i.e. set 
    if both first and second have their bit set.)
    
  • | (OR bit a bit): Este también es un operador binario, es decir, funciona en dos operandos. El operador OR bit a bit toma dos números como operandos y hace OR en cada bit de dos números. El resultado de OR es 1 cualquiera de los dos bits es 1.

    Sintaxis :

    $First | $Second
    
    This will return another number whose bits are 
    set if either the bit of first or second are set.
    

    Ejemplo:

    Input: First = 5, Second = 3
    
    Output: The bitwise | of both these value will be 7. 
    
    Explanation:
    Binary representation of 5 is 0101 and 3 is 0011.
    Therefore their bitwise | will be 0111 (i.e. set 
    if either first or second have their bit set.)
    
  • ^ (Bitwise XOR): este también es un operador binario, es decir, funciona en dos operandos. Esto también se conoce como operador OR exclusivo. Bitwise XOR toma dos números como operandos y hace XOR en cada bit de dos números. El resultado de XOR es 1 si los dos bits son diferentes.

    Sintaxis :

    $First ^ $Second
    
    This will return another number whose bits are 
    set if one of the bit in first or second is 
    set but not both.
    

    Ejemplo:

    Input: First = 5, Second = 3 
    
    Output: The bitwise ^ of both these value will be 6. 
    
    Explanation:
    Binary representation of 5 is 0101 and 3 is 0011. 
    Therefore their bitwise ^ will be 0110 (i.e. set 
    if either first or second have their bit set but 
    not both.)
    
  • ~ (Bitwise NOT) : Este es un operador unario, es decir, funciona en un solo operando. El operador NOT bit a bit toma un número e invierte todos sus bits.

    Sintaxis :

    ~$number
    
    This will invert all the bits of $number.
    

    Ejemplo:

    Input: number = 5
    
    Output: The bitwise '~' of this number will be -6.
    
    Explanation:
    Binary representation of 5 is 0101. Therefore the
    bitwise ~ of this will be 1010 (inverts all the 
    bits of the input number)
    
  • << (Desplazamiento a la izquierda bit a bit): Este es un operador binario, es decir, funciona en dos operandos. El operador de desplazamiento a la izquierda bit a bit toma dos números, desplaza a la izquierda los bits del primer operando, el segundo operando decide el número de lugares a desplazar.

    Sintaxis :

    $First << $Second
    
    This will shift the bits of $First towards the 
    left. $Second decides the number of time the
    bits will be shifted.
    

    Ejemplo:

    Input: First = 5, Second = 1
    
    Output: The bitwise << of both these value will be 10. 
    
    Explanation:
    Binary representation of 5 is 0101 . Therefore, 
    bitwise << will shift the bits of 5 one times 
    towards the left (i.e. 01010 )
    

    Nota: El desplazamiento a la izquierda bit a bit con un bit es equivalente a la multiplicación con 2.

  • >> (Desplazamiento a la derecha bit a bit): Este también es un operador binario, es decir, funciona en dos operandos. El operador Bitwise Right Shift toma dos números, desplaza a la derecha los bits del primer operando, el segundo operando decide el número de lugares a desplazar.

    Sintaxis :

    $First >> $Second
    
    This will shift the bits of $First towards the 
    right. $Second decides the number of time the 
    bits will be shifted.
    

    Ejemplo:

    Input: First = 5, Second = 1 
    
    Output: The bitwise >> of both these value will be 2. 
    
    Explanation:
    Binary representation of 5 is 0101 . Therefore, 
    bitwise >> will shift the bits of 5 one times 
    towards the right(i.e. 010)
    

    Nota: El desplazamiento a la derecha bit a bit con un bit es equivalente a la división con 2.

A continuación se muestra la implementación de operadores bit a bit en PHP:

<?php
    // PHP code to demonstrate Bitwise Operator.
          
    // Bitwise AND
    $First = 5;
    $second = 3;
    $answer = $First & $second;
      
    print_r("Bitwise & of 5 and 3 is $answer");
      
    print_r("\n");
      
    // Bitwise OR
    $answer = $First | $second;
    print_r("Bitwise | of 5 and 3 is $answer");
      
    print_r("\n");
      
    // Bitwise XOR
    $answer = $First ^ $second;
    print_r("Bitwise ^ of 5 and 3 is $answer");
      
    print_r("\n");
      
    // Bitwise NOT
    $answer = ~$First;
    print_r("Bitwise ~ of 5 is $answer");
      
    print_r("\n");
      
    // Bitwise Left shift
    $second = 1;
    $answer = $First << $second;
    print_r("5 << 1 will be $answer");
      
    print_r("\n");
      
    // Bitwise Right shift
    $answer = $First >> $second;
    print_r("5 >> 1 will be $answer");
      
    print_r("\n");
?>

Producción:

Bitwise & of 5 and 3 is 1
Bitwise | of 5 and 3 is 7
Bitwise ^ of 5 and 3 is 6
Bitwise ~ of 5 is -6
5 << 1 will be 10
5 >> 1 will be 2

Publicación traducida automáticamente

Artículo escrito por ShivamKD y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *