반응형

비트를 조작하는 다음의 매크로를 작성하고 동작을 확인하라.

(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

+ Recent posts