Macro RGB#define _RGB16BIT565(r,g,b) ((bamp;31) (gamp;63)lt;lt;5) ((ramp;31)lt;lt;lt;11)) ¿Por qué ¿Necesitas primero comparar bit a bit?
32 bits.
En cuanto a RGB565, R ocupa 5 bits, de 0 a 31; G ocupa 6 bits, de 0 a 63; B ocupa 5 bits, de 0 a 31. Sume todos los valores en todos los bits
Eso es 0-65535;
Las operaciones de color admitidas por la computadora son operaciones de color sin signo y no hay números negativos para los colores, incluso si crees que ingresaste es un número negativo
. Incluso si cree que está ingresando un número negativo, la computadora siempre lo reconocerá como un número positivo. Esto es un poco difícil de entender; por ejemplo, si escribe un número negativo en d pero lo imprime en u, no obtendrá un número negativo, la computadora lee, imprime y usa el color en u, como si fuera así; era una computadora.
En cuanto a por qué se dice presionar primero y luego cambiar de marcha, es puramente por conveniencia de cálculo. Los pasos de cambiar de marcha primero y luego
tomar son mucho más problemáticos. que esto. Los valores que quieres tomar no son simplemente 31, 63 y 31
. Pero 63488(1111100000000000), 2016(0000011111100000) y 31, entonces tu fórmula queda así:
#define _RGB16BIT565(r, g, b) ( (bamp; 31) ((glt; lt. 5 )amp; 2016) ((rlt; lt; 11)amp; 63488))), en comparación, no es más problemático que el original
Espero que te sea de ayuda