Operadores sobre bits

  • Enlace amigable (slug) de la revisión: Guía_JavaScript_1.5/Operadores/Operadores_sobre_bits
  • Título de la revisión: Operadores sobre bits
  • Id de la revisión: 284615
  • Creada:
  • Creador: Lopez
  • ¿Es la revisión actual? No
  • Comentario

Contenido de la revisión


Operadores sobre bits

Los operadores sobre bits tratan a sus operandos como cconjuntos de 32 bits (ceros y unos), en vez de como numeros decimales, hexadecimales, u octales. Por ejemplo, el numero decimal nueve tiene como representación binaria 1001. Los operadores sobre bits realizan sus operaciones en estas representaciones binarias, pero devuelven valores numéricos estandar de JavaScript.

La siguiente tabla resume los operadores sobre bits de JavaScript.

Operador Uso Descripcion
AND a nivel de bits a & b Devuelve un uno en cada posición de bit en la cual los correspondientes bits de ambos operandos sean unos.
OR a nivel de bits a | b Devuelve uno en cada posicion de bit para el cual los correspondientes bits de sus operandos sean unos.
XOR a nivel de bits a ^ b Devuelve un uno en cada posicion de bit en la cual alguno de los correspondientes bits de sus operandos pero no ambos sean uno
NOT a nivel de bits ~ a Invierte los bits de su operando
Desplazamiento a la izquierda a << b Desplaza la representación binaria de a b bits a la izquierda, rellenando con ceros por la derecha.
Desplazamiento a la derecha con propagación de signo a >> b Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha.
Desplazamiento a la derecha con relleno de ceros a >>> b Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha, y rellena con ceros por la izquierda.

Tabla: Operadores sobre bits

Operadores lógicos sobre bits

Conceptualmente, los operadores lógicos a nivel de bits trabajan de la siguiente forma:

  • Los operandos se convierten a enteros de treinta y dos bits y se expresan mediante una serie de bits (ceros y unos).
  • Cada bit en el primer operando es emparejado con el correspondiente bit en el segundo operando; primer bit con primer bit, segundo con segundo, etc.
  • El operador es aplicado a cada par de bits, y el resulrado es construido a partir de los resultados de estas operaciones.

Por ejemplo, la representacion binaria de nueve es 1001, y la representacion binaria de quince es 1111. Por eso, cuando se aplican sobre estos valores los operadors a nivel de bits, los resultados que se obtienen son los siguientes:

  • 15 & 9 produce 9 (1111 & 1001 = 1001)
  • 15 | 9 produce 15 (1111 | 1001 = 1111)
  • 15 ^ 9 produce 6 (1111 ^ 1001 = 0110)

Operaciones de desplazamiento sobre bits

Los operadores de desplazamiento sobre bits toman dos operandos: el primero es una cantidad a ser tratada, y el segundo especifica el numero de posiciones de bits del primer operando que hay que desplazar. La dirección de la operación de desplazamiento es controlada por el operador empleado.

Los operadores de desplazamiento convierten sus operandos a enteros de treinta y dos bits y devuelven un resultado del mismo tipo que el operador izquierdo.

Los operadores de desplazamiento están listados en la siguiente tabla.

Operador Descripcion Ejemplo
<<
Desplazamiento a la izquierda
Desplaza la representación binaria de a b bits a la izquierda, rellenando con ceros por la derecha. 9<<2 produce 36, porque 1001 movido 2 bits a la iquierda resulta 100100, que es 36.
>>
Desplazamiento a la derecha con propagación de signo
Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha. 9>>2 produce 2, porque 1001 movido 2 bits a la derecha resulta 10, que es 2. Del mismo modo, -9>>2 produce -3, porque el signo se preserva.
>>>
Desplazamiento a la derecha con relleno de ceros
Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha, y rellena con ceros por la izquierda. 19>>>2 yields 4, porque 10011 movido 2 bits a la derecha resulta 100, que es 4. Para numeros no negativos, los dos tipos de desplazamiento a la derecha dan el mismo resultado.

Tabla: Operadores de desplazamiento sobre bits

{{template.AnteriorSiguiente("Guía JavaScript 1.5:Operadores:Operadores aritméticos", "Guía JavaScript 1.5:Operadores:Operadores lógicos")}}

{{ wiki.languages( { "fr": "fr/Guide_JavaScript_1.5/Op\u00e9rateurs/Op\u00e9rateurs_bit-\u00e0-bit", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Operatory/Operatory_bitowe" } ) }}

Fuente de la revisión

<p>
</p><p><br>
</p>
<h3 name="Operadores_sobre_bits"> Operadores sobre bits </h3>
<p>Los operadores sobre bits tratan a sus operandos como cconjuntos de 32 bits (ceros y unos), en vez de como numeros decimales, hexadecimales, u octales. Por ejemplo, el numero decimal nueve tiene como representación binaria 1001. Los operadores sobre bits realizan sus operaciones en estas representaciones binarias, pero devuelven valores numéricos estandar de JavaScript.
</p><p>La siguiente tabla resume los operadores sobre bits de JavaScript.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>Operador</th>
<th>Uso</th>
<th>Descripcion</th>
</tr>
<tr>
<td>AND a nivel de bits</td>
<td><code>a &amp; b</code></td>
<td>Devuelve un uno en cada posición de bit en la cual los correspondientes bits de ambos operandos sean unos.</td>
</tr>
<tr>
<td>OR a nivel de bits</td>
<td><code>a | b</code></td>
<td>Devuelve uno en cada posicion de bit para el cual los correspondientes bits de sus operandos sean unos.</td>
</tr>
<tr>
<td>XOR a nivel de bits</td>
<td><code>a ^ b</code></td>
<td>Devuelve un uno en cada posicion de bit en la cual alguno de los correspondientes bits de sus operandos pero no ambos sean uno</td>
</tr>
<tr>
<td>NOT a nivel de bits</td>
<td><code>~ a</code></td>
<td>Invierte los bits de su operando</td>
</tr>
<tr>
<td>Desplazamiento a la izquierda</td>
<td><code>a &lt;&lt; b</code></td>
<td>Desplaza la representación binaria de a b bits a la izquierda, rellenando con ceros por la derecha.</td>
</tr>
<tr>
<td>Desplazamiento a la derecha con propagación de signo</td>
<td><code>a &gt;&gt; b</code></td>
<td>Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha.</td>
</tr>
<tr>
<td>Desplazamiento a la derecha con relleno de ceros</td>
<td><code>a &gt;&gt;&gt; b</code></td>
<td>Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha, y rellena con ceros por la izquierda.</td>
</tr>
</tbody></table>
<p><small><b>Tabla: Operadores sobre bits</b></small>
</p>
<h4 name="Operadores_l.C3.B3gicos_sobre_bits"> Operadores lógicos sobre bits </h4>
<p>Conceptualmente, los operadores lógicos a nivel de bits trabajan de la siguiente forma:
</p>
<ul><li> Los operandos se convierten a enteros de treinta y dos bits y se expresan mediante una serie de bits (ceros y unos).
</li><li> Cada bit en el primer operando es emparejado con el correspondiente bit en el segundo operando; primer bit con primer bit, segundo con segundo, etc.
</li><li> El operador es aplicado a cada par de bits, y el resulrado es construido a partir de los resultados de estas operaciones.
</li></ul>
<p>Por ejemplo, la representacion binaria de nueve es 1001, y la representacion binaria de quince es 1111. Por eso, cuando se aplican sobre estos valores los operadors a nivel de bits, los resultados que se obtienen son los siguientes:
</p>
<ul><li> 15 &amp; 9 produce 9 (1111 &amp; 1001 = 1001)
</li><li> 15 | 9 produce 15 (1111 | 1001 = 1111)
</li><li> 15 ^ 9 produce 6 (1111 ^ 1001 = 0110)
</li></ul>
<h4 name="Operaciones_de_desplazamiento_sobre_bits"> Operaciones de desplazamiento sobre bits </h4>
<p>Los operadores de desplazamiento sobre bits toman dos operandos: el primero es una cantidad a ser tratada, y el segundo  especifica el numero de posiciones de bits del primer operando que hay que desplazar. La dirección de la operación de desplazamiento es controlada por el operador empleado.
</p><p>Los operadores de desplazamiento convierten sus operandos a enteros de treinta y dos bits y devuelven un resultado del mismo tipo que el operador izquierdo.
</p><p>Los operadores de desplazamiento están listados en la siguiente tabla.
</p>
<table class="fullwidth-table">
<tbody><tr>
<th>Operador</th>
<th>Descripcion</th>
<th>Ejemplo</th>
</tr>
<tr>
<td>&lt;&lt;<br>
Desplazamiento a la izquierda</td>
<td>Desplaza la representación binaria de a b bits a la izquierda, rellenando con ceros por la derecha.</td>
<td>9&lt;&lt;2 produce 36, porque 1001 movido 2 bits a la iquierda resulta 100100, que es 36.</td>
</tr>
<tr>
<td>&gt;&gt;<br>Desplazamiento a la derecha con propagación de signo</td>
<td>Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha.</td>
<td>9&gt;&gt;2 produce 2, porque 1001 movido 2 bits a la derecha resulta 10, que es 2. Del mismo modo, -9&gt;&gt;2 produce -3, porque el signo se preserva.</td>
</tr>
<tr>
<td>&gt;&gt;&gt;<br>
Desplazamiento a la derecha con relleno de ceros</td>
<td>Desplaza la representación binaria de a b bits a la derecha, descartando los bits que sobran por la derecha, y rellena con ceros por la izquierda.</td>
<td>19&gt;&gt;&gt;2 yields 4, porque 10011 movido 2 bits a la derecha resulta 100, que es 4. Para numeros no negativos, los dos tipos de desplazamiento a la derecha dan el mismo resultado.</td>
</tr>
</tbody></table>
<p><small><b>Tabla: Operadores de desplazamiento sobre bits</b></small>
</p><p>{{template.AnteriorSiguiente("Guía JavaScript 1.5:Operadores:Operadores aritméticos", "Guía JavaScript 1.5:Operadores:Operadores lógicos")}}
</p>{{ wiki.languages( { "fr": "fr/Guide_JavaScript_1.5/Op\u00e9rateurs/Op\u00e9rateurs_bit-\u00e0-bit", "pl": "pl/Przewodnik_po_j\u0119zyku_JavaScript_1.5/Operatory/Operatory_bitowe" } ) }}
Revertir a esta revisión