반응형
비트맵(bitmap)을 다루다 보면
16비트 컬러 값을 32비트로 변환해야 할 일이 생긴다.
그럴 때 귀찮은 비트 연산을 해야 하는데
아래와 같이 하면 된다.
// 하나의 픽셀이 short형으로 저장되어있다. short color = 0x6782; // 3만큼 shift 함으로써 0부터 255까지의 컬러값이 표현된다. short r = ( (color & 0xf800) >> 11 ) <;<; 3; short g = ( (color & 0x07c0) >> 6 ) <;<; 3; short b = ( (color & 0x003e) >> 1 ) <;<; 3; short a = ( (color & 0x0001) >> 0 ) <;<; 3; |
여기서 첫 번째 red 값을 구한
원리에 대해서 간단히 이해해 보자.
우선 AND 연산을 한다.
1100 1010 1101 0101
& 1111 1000 0000 0000
----------------------
1100 1000 0000 0000
이것을 11 만큼 오른쪽으로 shift를 하면
1100 1000 0000 0000 >> 11
→
0000 0000 0001 1001 가 된다.
다시 3만큼 왼쪽으로 shift를 하면
0000 0000 0001 1001
→
0000 0000 1100 1000 이 된다.
이렇게 하면 최댓값이 0000 0000 1111 1111이 되고
이것은 10진수로 255가 된다.
즉, 0부터 255까지의 숫자 표현이 가능해진다.
반응형
'컴퓨터' 카테고리의 다른 글
printf 사용하는 법 (0) | 2018.04.24 |
---|---|
컴퓨터구입, 요즘따라 컴퓨터 구매 충동이 생기는듯 (0) | 2018.04.24 |
와이브로란? 와이브로(WiBro)에 대해서 알아보자 (0) | 2018.04.15 |
코딩룰(Coding Rule), 코딩스타일(Coding Style)은 프로그래머의 기본 (0) | 2018.04.10 |
컴퓨터를 왕년에 쫌 했던 사람 이면 공감 할 만한 BEST5 (0) | 2017.12.12 |
프로그래밍(Programming)을 시작한다는 것에 관하여 한마디 (0) | 2017.12.10 |
malloc 사용하는 법 (0) | 2017.12.10 |
Malloc(동적메모리 할당) vs Array(배열) (0) | 2017.12.10 |