Herramientas de usuario

Herramientas del sitio


cpp-avanzado:operaciones-de-bits

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
cpp-avanzado:operaciones-de-bits [2018/01/02 02:50]
guty [Desplazamiento de bits (Shift de bits)]
cpp-avanzado:operaciones-de-bits [2018/01/02 02:51] (actual)
guty [Desplazamiento de bits (Shift de bits)]
Línea 112: Línea 112:
 $$ $$
  
-Una **aplicación muy común** de los shift de bits es **obtener el k-ésimo bit de un número**. Usando que ''​1 << k''​ nos da el número $2^k$, cuya representación tiene solamente el k-ésimo bit igual a $1$, podemos acceder al k-ésimo bit de un número $x$ en C++ haciendo ''​ x & (1 << k) ''​ (si el k-ésimo bit está encendido ​nos devuelve $2^k$si queremos ​saber solo si es 1 o no, debemos escribir algo como: ''​ (x & (1 << k)) != 0 ''​).+Una **aplicación muy común** de los shift de bits es **obtener el k-ésimo bit de un número**. Usando que ''​1 << k''​ nos da el número $2^k$, cuya representación tiene solamente el k-ésimo bit igual a $1$, podemos acceder al k-ésimo bit de un número $x$ en C++ haciendo ''​ x & (1 << k) ''​ (si el k-ésimo bit es 1, nos devuelve $2^k$. Entonces ​si quisiéramos ​saber solo si es 1 o no, debemos escribir algo como: ''​ (x & (1 << k)) != 0 ''​).
  
 Si estamos **trabajando con 64 bits** hay que tener cuidado y escribir ''​1LL << k''​ si queremos tener al número $2^k$ con $k \geq 31$ (el motivo de esto se explica [[curso-cpp:​mas-tipos#​tipo_de_un_literal_entero|aquí]]). ​ Si estamos **trabajando con 64 bits** hay que tener cuidado y escribir ''​1LL << k''​ si queremos tener al número $2^k$ con $k \geq 31$ (el motivo de esto se explica [[curso-cpp:​mas-tipos#​tipo_de_un_literal_entero|aquí]]). ​
cpp-avanzado/operaciones-de-bits.1514861455.txt.gz · Última modificación: 2018/01/02 02:50 por guty