빛의 삼원색은 R(빨강), G(초록), B(파랑)이다.
그림에서도 알 수 있다시피 빛은 합성할 수록 밝아지고, 적절히 합성해 모든 색을 만들 수 있다.
따라서 R,G,B 의 값(세기)를 알고 있으면 어떤 색을 표현할 수 있을 것이다.
컴퓨터는 이진법을 기본으로하며, 많은 곳에 이진법이 사용된다.. R,G,B 값 역시 0~255로 표현되는데, 이는 8자리 2진수, 2자리 16진수로 표현 할 수 있는 값의 범위이다.
진법과 진수
진수와 진법을 이야기하고 있는데, 이에 대해 잘 모르는 독자가 있을 것이다. 그러니 우선 진수와 진법에 대해 알아보려한다.
진법은 수를 세는 방법, 진수는 어떤 진법으로 센 수를 의미한다.
예를 들어 2진법은 2가지 수(0,1)를 이용해 수를 세는 방법을, 4진수는 4진법으로 센 수를 말한다.
2진법, 4진법, 8진법, 10진법은 0,1,2,3,4,5,6,7,8,9를 이용해 할 수 있겠지만 16진법부터는 문제가 발생한다.
10진수 10을 16진법으로 어떻게 표현할 것인가?
이에 대하여 다음과 같이 약속하였다.
\[10=a\\ 11=b\\ 12=c\\ 13=d\\ 14=e\\ 15=f\]진법의 변환
진법의 변환은 어떻게 할 수 있을지에 대해 알아보기 전, ‘자리’에 대해 살펴보자.
10진수에서 우리는 일반적으로 다음과 같이 말한다.
\[123456789라는 수가 있을 때, \\ 1의 자리는 9 \\ 10의 자리는 8 \\ 100의 자리는 7 \\ … \\ 100000000의 자리는 1\]이는 다음과 같이 표현 할 수 도 있을 것이다.
\[10^0의 자리는 9 \\ 10^1의 자리는 8 \\ 10^2의 자리는 7 \\ ... \\ 10^8의 자리는 1\]이진수 100110001에도 적용해보자.
\[2^0의 자리는 1 \\ 2^1의 자리는0 \\ 2^2의 자리는 0 \\ ... \\ 2^8의 자리는 1\]진법의 변환
10진수가 아닌 수에서 10진수로의 변환은 다음과 같이 할 수 있다.
\(k진법,
\\
n_x는 x번째 자리수
\\
(1부터 시작)\)
\(n_x\times k^{x-1}+n_{x-1}\times k^{x-2}+\cdots +n_{2}\times k^{1} +n_{1}\times k^{0}\)
10진수에서 다른 진수로의 변환은, 10진수를 바꾸고자 하는 진법(8진법이면 8)으로 몫이 0이 될때까지 반복해서 나누어 주고, 각각의 나머지를 낮은 자리부터 적어주면 된다.[1]
표현 가능 범위
\[k진법의 n자리 수는 \\ k^n -1까지 표현할 수 있다.\]RGB로 돌아가 보자.
색은 다음과 같이 표현한다.
- 10진 코드
(R,G,B)
- 헥스코드[2]
#RRGGBB
번외
CSS[3]에서는 다음과 같이도 표현한다.
(XX)
위는
#XXXXXX
와 같다.
예시
위 사진은 아래 사이트를 통해 생성되었다.
https://encycolorpedia.kr/
1 2의 제곱수 진법끼리는 더 간단한 방법이 있다. 이는 독자들이 생각해 보길 바란다.
2 : hexadeca, 16을 뜻한다.
3 Cascading Style Sheets, 주로 HTML과 함께 디자인 등을 위해 사용된다.