Esto podría ser muy básico o incluso tonto para los expertos aquí, pero quería entender esto. La mayoría de las veces que generalmente escribir valores hexadecimales como esta en C:Interpretando valores hexadecimales?
unsigned int a = 0xFFFF1232;
Digamos que estoy tratando de extraer los primeros y los últimos 16 bits entonces puedo simplemente hacer:
unsigned short high = a >> 16; // Gives me 0xFFFF
unsigned short low = a & 0x0000FFFF; // Gives me 0x000which is then stored as 0x1232
En algunos del código que estoy leyendo me he encontrado lo siguiente:
unsigned short high = a >> 16;
unsigned short low = a & 0xFFFF;
tengo dos preguntas
- Cuando está
AND
ing un valor de 32 bits con una máscara, ¿por qué las personas escriben0xFFFF
en lugar de0x0000FFFF
? ¿Es para mantenerlo compacto? - ¿Es siempre seguro escribir
0x0000FFFF
como0xFFFF
? ¿Se interpreta de manera diferente en cualquier contexto?
Creo que uno es "más legible" aquí es discutible y está sujeto a interpretación, pero +1. –
Prefiero decir "menos legible" (por ejemplo: hoy es 00000002010/00000000012/00000000004). – ruslik
@xscott: es perfectamente legal escribir 'char c = 0x000000000000000000001;' recibirá una advertencia solo cuando el valor real (y no su representación) exceda el tamaño del destino, – ruslik