2007/11/09

Perguntas simples com respostas menos simples -- 1

Porque é que se optou universalmente por representar as cores em formato numérico hexadecimal!? Qual a vantagem? Porque não decimal, octal ou binário?

7 comentários:

Anónimo disse...

Olha. Esta não sei!
Fico à espera que me expliques depois. Sou todo ouvidos !

Aurora disse...

Era muito mau responder com a "pergunta nº 2": porque é que alguém se lembrou de perguntar?
:P
(desculpa qq coisinha, o meu cérebro às 2 da manhã entra em greve!)

Catsone disse...

Desculpa lá, mas não percebo chinês.

Balhau disse...

Aurora: Achas mesmo? (se a apanho atiro-lhe com uma pedra...)

Catsone: Tas desculpado (cabrao... ele que passe por aveiro que logo ve porque é que os carros a partir dos 100 mil dão problemas... Heheh)

Quanto às cores:
Já todos vocês foram às propriedades da placa gráfica do pc, certo? Então devem ter notado que a gama de cor disponível varia entre os 8 bits (256 cores) e os 24 bits (16,777,215 cores). Sim eu sei nas vossas propriedades aparece 32 bits e não 24, ja vimos isso adiante.
Suponhamos então que vocês tem 16,777,215 cores possíveis e agora tem à vossa frente a maravilhosa questão: Como é que vou representar esta merda?

1ªOpçao: Já que o pc fala em bits, porque não falar em bits?

2ªOpção: Já que eu falo em decimal, porque não representar em decimal?

3ªOpção: Já ouvi falar em octal, porque não falar em octal?

4ªOpção: Bem, já que todos representam em hexa então eu vou fazer o mesmo.

Suponhamos então que o caro leitor decide falar linguagem máquina e está portanto decidido a representar toda e qualquer cor em formato binário. Ora bem se estiver com um sistema de visualização de 24 bits isso quer dizer que vai ter de usar 24 caracteres sempre que quiser representar uma cor. Mais, a estrutura binária dá-lhe alguma ideia da cor que possa estar representada?

Se por outro lado o senhor acha que a maquina se deve adaptar a nós e não nós a ela então deixe-me que lhe pergunte o seguinte. Que cor é a 156466, mais, qual a percentagem de vermelho azul e verde que compoem esta cor? Pois não sabe...

Octal não diz nada à maior parte do pessoal mas em boa verdade é melhor que as duas representações anteriores. Mas então porquê o hexa?

Vamos lá ver entao como é representada a cor internamente. A maior parte do hardware representa a cor como uma sequência de bits, supondo que temos 24 bits de cor disponíveis a estrutura é a seguinte:

rrrrrrrr gggggggg bbbbbbbb

onde r (red),b (blue),g (green) são 0's ou 1's. Os primeiros 8 bits de cor correspondem à cor vermelha (pode também ser representada de maneira inversa, gbr em vez de rbg) os 8 bits seguintes correspondem à cor verde e os finais à cor azul. A imagem que aparece neste post dá uma ideia de como é gerada qualquer cor a partir da combinação destas três componentes, é portanto natural que surja o interesse em representar a cor como composição de vermelho, verde e azul. É evidente que vocês conseguem saber qual a percentagem de cor associada a cada uma destas três categorias se optarem pela representaçao binaria, no entanto não fica de todo agradavel trabalhar com um sistema cuja notação de uma cor utiliza 24 caracteres. No caso de optarem pelo formato decimal, facilmente veem que converter 8 bits para decimal não dá conta certa e portanto não há maneira rapida de vizualizar e manipular cor neste formato. Se optarmos pela representação hexadecimal rapidamente vemos que os 24 bits anteriores são convertidos em numeros de 6 dígitos que se encontram entre:

0xFFFFFF e 0x000000

Agora notemos que 2^8=(2^4)^2=16^2
portanto temos que

0x RR GG BB

E necessitamos somente de 2 digitos para representar cada uma das componentes de cor. É fácil de visualizar de manipular e converter. É por isso a escolha universal na representação da cor.
Só para finalizar a maior parte de vocês dir-me-à que não faz grande sentido falar em 24 bits porque a maior parte dos pc's trabalha com 32. Sim é verdade mas estes 32 bits não referem 2^32 tipos diferentes de cor. Na verdade este sistema representa os 24 bits de cor com mais uma componente de 8 bits que corresponde à quantidade (255 valores diferentes) de alpha, ou transparência com que a cor escolhida aparecerá no ecran. De qualquer das maneiras note-se que 2^32=(2^4)^8, e portanto a cor representada em hexa passa a ser

0xAA RR GG BB

Onde AA é a componente de alpha da cor. A merda é a mesma, o cheiro é que é diferente. Podia entrar em pormenores acerca da facildiade com que se manipulam valores hexadecimais para representar as gamas de cor e passar para outras representações, mas acho que iria fazer com que as pessoas deixassem de vir aqui ao blog e eu nao quero isso...
:D
Veijos e AVRAÇOS...

Aurora disse...

De que cor são os beijos? :P
Desculpa... mas ainda por cima hoje descobri que para imprimir publicações tudo isso tem que ser convertido em cyan, magenta, amarelo e preto... lol
Enfim... O poema do post seguinte esta muito bom... ;)

Balhau disse...

Os beijos podem ser da cor que tu quiseres! Aliás não é essa toda a magia que se esconde por detrás do mais banal dos ósculos? Quanto ao poema eu gosto mais da foto!
:D

Obrigado moça!

Anónimo disse...

cyan, magenta, amarelo e preto

CMY & B

Ou seja as cores primárias, a base de toda a palette que existe :) Claro que tudo tem de ser impresso com estas cores :)