Muestra las diferencias entre dos versiones de la página.
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í]]). |