[PHP]bitwise operators ...
ITWeb/개발일반 2008. 4. 17. 10:33[bitwise operators]
이 연산자를 어디서 사용을 하고 계시나요?
쓰임새가 목적에 따라 다르겠지만 제가 지금 설명 하고자 하는 내용은 이것을 이용해서 컨텐츠(글)에 대한 옵션을 지정하는 방법입니다.
ref. http://www.php.net/manual/en/language.operators.bitwise.php
ref. http://www.vipan.com/htdocs/bitwisehelp.html
일반적으로 블로그 컨텐츠의 경우 글 작성을 하는 경우 여러가지 옵션이 존재 합니다.
- 공개, 비공개, 19금, 친구만 공개, 구독자만 공개, 검색에 노출/비노출 등등...
이렇게 많은 글에 대한 옵션이 등장하죠.
위에 예를 가지고 설명해보겠습니다.
공개/비공개 : 1
친구만 공개/비공개 : 2
구독자만 공개/비공개 : 4
검색에 공개/비공개 : 8
binary 로 표현 하면
1 1 1 1
2^^3 2^^2 2^^1 2^^0
이케 되겠내요.
사용자가 옵션을 선택해 보죠..
글을 공개 하고 검색에 노출하고 싶다
binary : 1001
decimal : 9
그럼 실제 코딩 단계에서는 어떻게 이런 값을 얻을수 있을까요?
일반적으로 글에 대한 default 값이 존재 합니다.
default 를 공개로만 설정하고 나머지는 사용자가 선택 해야 한다고 가정 하도록 하죠.
bitOpen = 1
bitFriend = 2
bitReader = 4
bitSearch = 8
flag = 0
위와 같이 16가지의 옵션이 존재 할 수 있겠죠.. 이들에 대한 표현을 하기 위해서 bitwise operators 를 사용 하는 것이지요..
0000 : 전체 비공개
0001 : 공개
0010 : 친구만 공개
0011 : 공개및 친구도 공개 (사실 예가 좀 안좋내요..ㅡㅡ^ 이점 너그럽게 이해해 주시길.. ^^;)
1001 : 공개 하고 검색에도 등록 (이 예가 더 좋내요.. ^^;)
....
1111 : 전체 공개
flag |= bitOpen (0001)
flag |= bitFriend (0010)
flag |= bitReader (0100)
flag |= bitSearch (1000)
등등..
bitOpenY = flag | bitOpen
bitOpenN = flag & bitOpen
bitFriendY = flag | bitFriend
bitFriendN = flag & bitFriend
// 글 공개 이나 친구에게는 비공개로 선택
result = bitOpenY | bitFriendN (0001)
이거 뭐 그냥.. bitOpen 만 쓰면 되지 이걸 왜 연산까지 하냐 그러시겠지만 아주 초 간단 예를 들어서 그렇게 보일수 있는 거구요.
2^^N 개의 옵션이 있는 경우 이 bitwise operators 는 정말 유용하게 사용 됩니다.
그냥 기초 이니까.. 그 원리만 이해를 하시면 될듯 하내요.. ^^*
과거에도 쉽게 사용했던 방법은 주로 코드 테이블을 짜서 사용을 했었죠.. 아마도..
각 단위별로 의미를 부여 하고.. 코드를 생성 하거나 특정 값에 의미를 부여 하는 식으루다가요..
rdbms 랑 script 랑 잘 만들어서 사용하면 퍼포먼스 도 그렇고 유지보수에도 좋은 결과가 나올 겁니다..
(늘 그렇듯이 잘 만들면.. ㅋ)