안녕하세요 오늘은 특정비트를 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)
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 포인터에 관해서 (0) | 2020.06.13 |
---|---|
C언어 배열의 변수명에 &를 붙이면? (0) | 2020.05.14 |
함수 선언할 때 매개변수에 *넣는거와 안넣는거 차이점. (0) | 2020.01.06 |
#define와 #와 ##의 관계 (0) | 2019.07.06 |
재귀함수란 무엇인가 (0) | 2019.06.09 |