bits
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
bits [2016/03/15 13:01] – [Ejemplo 2: extracción de bits] lmateu | bits [2018/03/22 12:57] (actual) – [Ejemplo 2: extracción de bits] lmateu | ||
---|---|---|---|
Línea 20: | Línea 20: | ||
* x & MASK : borra aquellos bits de x que en la máscara MASK aparezcan en 0. | * x & MASK : borra aquellos bits de x que en la máscara MASK aparezcan en 0. | ||
- | * x | MASK : colocar en 1 los bits de x que en MASK aparezcan en 0. | + | * x | MASK : colocar en 1 los bits de x que en MASK aparezcan en 1. |
Por conveniencia se usan números hexadecimales para expresar las máscaras. | Por conveniencia se usan números hexadecimales para expresar las máscaras. | ||
Línea 117: | Línea 117: | ||
===== Ejemplo 2: extracción de bits ===== | ===== Ejemplo 2: extracción de bits ===== | ||
- | Supongamos que un entero sin signo x está formado por x< | + | Supongamos que un entero sin signo x está formado por x< |
Como etapa previa necesitaremos de una función que entregue una máscara con los j bits menos significativos en 1. Por ejemplo si j=4 la máscara sería 00...001111. | Como etapa previa necesitaremos de una función que entregue una máscara con los j bits menos significativos en 1. Por ejemplo si j=4 la máscara sería 00...001111. | ||
Línea 145: | Línea 145: | ||
unsigned int extract(unsigned int x, int i, int k) { | unsigned int extract(unsigned int x, int i, int k) { | ||
return (x<< | return (x<< | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | y por último: | ||
+ | |||
+ | < | ||
+ | unsigned int extract(unsigned int x, int i, int k) { | ||
+ | return ( x & ( ((unsigned)-1)>> | ||
} | } | ||
</ | </ |
bits.1458046869.txt.gz · Última modificación: 2016/03/15 13:01 por lmateu