Se que esto es algo viejo, pero desde hace unos días me metí con eso de los bits (Onda que es un quilombo al principio
), leyendo y leyendo, me queda una duda en esta parte:
(12/09/2014, 04:42 AM)meTaLiCroSS escribió: Listo, ya tenemos a G. Falta R, usemos la misma ingenieria: Ya que los valores persisten en iPacked, ignoraremos a G y B moviendo 16 bits a la derecha, para que me queden los 8 bits de R al principio.
iPacked
00000000100000000100000011111111
iPacked >> 16
00000000000000000000000010000000
0xFF
00000000000000000000000011111111
(iPacked >> 16) & 0xFF
00000000000000000000000001000000
Corrígeme si me equivoco (y puede que si xD), pero al extraer el ultimo color ( R ), cuando lo mueves 16 veces a la derecha:
(12/09/2014, 04:42 AM)meTaLiCroSS escribió:
iPacked
00000000100000000100000011111111
iPacked >> 16
00000000000000000000000010000000
0xFF
00000000000000000000000011111111
(iPacked >> 16) & 0xFF
00000000000000000000000001000000
El resultado no debería sera así?:
iPacked
00000000100000000100000011111111
iPacked >> 16
00000000000000000000000010000000
0xFF
00000000000000000000000011111111
(iPacked >> 16) & 0xFF
00000000000000000000000010000000
Ya que, de la forma que tienes, el 7ºmo bit de los 8 bits de derecha a izquierda en la condición:
(12/09/2014, 04:42 AM)meTaLiCroSS escribió: 0xFF
1'1'111111
Es un 1 (el que esta entre ' ')
Mientras que el 7ºmo bit de los 8 bits de derecha a izquierda en la condición:
(12/09/2014, 04:42 AM)meTaLiCroSS escribió: iPacked >> 16
1'0'000000
Es un 0 (el que esta entre ' ')
Por ende, el resultado daría false, o el bit quedaría en 0, y el resultado real seria este:
(iPacked >> 16) & 0xFF
010000000
>>>>>>
(iPacked >> 16) & 0xFF
'1'00000000
No se si lo que digo tiene sentido o no, es que de tantas veces que lo he leído, me he percatado de ello, y quizás tenga el cerebro fundido
En caso de ser una confusión mía o malentendido, te pido disculpas Metal, y muy buen tuto.