'bitwise'에 해당되는 글 1건

  1. 2008.04.17 [PHP]bitwise operators ...

[PHP]bitwise operators ...

ITWeb/개발일반 2008.04.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 랑 잘 만들어서 사용하면 퍼포먼스 도 그렇고 유지보수에도 좋은 결과가 나올 겁니다..
(늘 그렇듯이 잘 만들면.. ㅋ)

신고

'ITWeb > 개발일반' 카테고리의 다른 글

[펌]AOP  (0) 2008.06.30
Data Hiding...  (0) 2008.06.16
[PHP]bitwise operators ...  (0) 2008.04.17
[PHP]php 로 구현된 singleton 패턴  (0) 2008.04.14
JavaScript 강좌 references.  (2) 2008.02.20
JavaScript Tips  (0) 2008.02.20
tags : , ,
Trackback 0 : Comment 0