[질문]함수 하나만 부탁드립니다..
글쓴이: leolo / 작성시간: 화, 2004/12/21 - 1:33오후
제가 함수 하나를 만들었는데요.. 너무 허접한 거 같아서
매크로로 간단히 정의 할 수 있는지 해서..
함수는
int getFlags(int flag, int idx)
flag의 idx 번째 값이 설정되었는지 확인하는 함수입니다.
리턴 값은 설정된 경우 1, 아니면 0을 리턴합니다.
기존의 것과 좀 다른 것은 다음과 같습니다.
예를 들어,
getFlags(100, 1); 이면 0을 리턴
getFlags(100, 3); 이면 1을 리턴합니다.
getFlags(100, 5); 이면 0을 리턴합니다.
즉, 눈에 보이는 숫자 그대로, 처음 부터 읽어, 리턴 값을 반환합니다.
이와 반대로 int setFlags(int flag, int idx) 라는 함수는
flag의 idx의 값을 설정합니다. 예를 들어,
setFlags(100, 1) 이라고, 하면 리턴 값은 101 이 됩니다.
만약, setFlags(100, 5) 라고 하면 리턴 값은 10100 입니다.
부탁드립니다.
제가 만든 것은 대충 이렇습니다.
// mflag 값 찾기 위해 사용. static int getFlags(int flag, int idx, int itv) { int j, div, ret; if(idx < itv) return -1; div = 1; for(j = 0; j < idx; j++) div *= 10; ret = 0; for(j = 0; j < itv; j++) { ret *= 10; ret += (flag % div) / (div/10); div /= 10; } return ret; }
Forums:
음... 루프로 돌리는 것 보다는 비트 AND 연산 사용하시면 좀더 빠르
음... 루프로 돌리는 것 보다는 비트 AND 연산 사용하시면 좀더 빠르지 않을까요?
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
음... 약간 원하시는 것과 다를 것 같은데요.flag 라면 0x
음... 약간 원하시는 것과 다를 것 같은데요.
flag 라면 0x01, 0x02, 0x04, 0x08 등등을 이용하시는 방법을 추천해 드립니다.
#define getFlag(a, b) ( a & (1 << (b-1)) )
#define setFlag(a, b) ( a |= (1 << (b-1)) )
간단하죠?? ^^;
더 이상 없다.
댓글 달기