프로그래밍 언어/C언어

C언어 특정비트 1로 만들기

원원 2020. 2. 25. 07:52

안녕하세요 오늘은 특정비트를 1로 만드는 것을 해보겠습니다


0b 0000 0000이라는 값이 있고

0b 0000 1000이라는 값으로 바꾸는게 목적입니다

이러한 기능은 아트메가를 사용할 때, 특정 포트를 1로 만들 때 주로 사용했습니다


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
#include<stdio.h>
 
void BITSET(int* variable, int bitNr)
{
    *variable |= 1 << bitNr;
}
 
int main()
{
    int variable = 0b00000000; //0x00
    printf("초기값 variable : %d \n",variable);
    
    BITSET(&variable,0);
    printf("1함수호출 variable : %d \n",variable);
    variable = 0b00000000; //초기화 
    
    BITSET(&variable,1);
    printf("2함수호출 variable : %d \n",variable);
    variable = 0b00000000; //초기화 
    
    BITSET(&variable,2);
    printf("3함수호출 variable : %d \n",variable);
    
    BITSET(&variable,3);
    printf("4함수호출 variable : %d \n",variable);
}
 
 
 

--------------------결과물--------------------

초기값 variable : 0

1함수호출 variable : 1

2함수호출 variable : 2

3함수호출 variable : 4

4함수호출 variable : 12

----------------------------------------------


위의 사진처럼 bitNR은 자릿수라고 보면 됩니다

값이 0이고 1함수호출때 BITNR을 0을 줬으니 0번째자리가 SET되고 값이 1이 됩니다

값이 0이고 2함수호출때 BITNR을 1을 줬으니 1번째자리가 SET되고 값이 2이 됩니다

값이 0이고 3함수호출때 BITNR을 2을 줬으니 2번째자리가 SET되고 값이 4이 됩니다

값이 4이고 4함수호출때 BITNR을 3을 줬으니 3번째자리가 SET되고 값이 12이 됩니다 (4+8)