반응형
비트를 조작하는 다음의 매크로를 작성하고 동작을 확인하라.
(a) SET_BIT(n, pos) : 변수 n 안에 있는 pos번째 비트를 1로 설정한다.
(b) CLR_BIT(n, pos) : 변수 n 안에 있는 pos번째 비트를 0으로 설정한다.
(c) GET_BIT(n, pos) : 변수 n 안에 있는 pos번째 비트를 0으로 반환한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <stdio.h> #define SET_BIT(n,pos) ((n)|=(0x01<<(pos))) //변수 n pos번째 비트 #define CLR_BIT(n,pos) ((n)&=~(0x01<<(pos))) #define GET_BIT(n,pos) ((n)>>(pos)&0x00) //무조건 0으로 반환이니까 int main(void) { int n,c,pos; n=0;c=0;pos=0; while(1){ printf("정수를 입력하세요: "); scanf("%d", &n); printf("%016x\n", n); printf("1: pos번째 비트 1로 설정 2: pos번째 비트 0으로 설정\n 3: pos번째 비트 0으로 반환 4:종료\n"); printf("번호를 입력하세요 : "); scanf("%d", &c); if(c==1) { printf("몇번째 비트? "); scanf("%d", &pos); SET_BIT(n,pos); printf("%016x\n", n); } else if(c==2) { printf("몇번째 비트? "); scanf("%d", &pos); CLR_BIT(n,pos); printf("%016x\n", n); } else if(c==3) { printf("몇번째 비트? "); scanf("%d", &pos); printf("%016x\n", GET_BIT(n,pos)); } else if(c==4) break; } return 0; } | cs |
반응형
'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글
정수 비트 이동 (0) | 2017.01.16 |
---|---|
2진수 출력 (0) | 2017.01.16 |
공백 세기 (0) | 2017.01.14 |
원기둥의 부피 (0) | 2017.01.14 |
배열 원소 일괄 초기화 (0) | 2017.01.14 |