on
비트마스크로 특정 비트 키고 끄거나 반대로 하는 법
비트마스크로 특정 비트 키고 끄거나 반대로 하는 법
참고
https://dojang.io/mod/page/view.php?id=184
비트가 1이면 on, 0이면 off이다.
예를들어
0100 0001 // 2번째, 8번째 비트가 켜진(on)상태
1. 특정 비트를 켜는 방법
플래그 |= 마스크
*플래그: 비트를 바꿀 변수
*마스크: 바꿀 비트위치를 나타냄, 바꿀 위치를 2진수로 표현한 뒤 10진수로 바꾸어 적을 것!
이 때 마스크를 적을 때 바꾸고자 하는 비트가
왼쪽에서 5번째 비트 : 10000
왼쪽에서 3번째 비트 : 00100
이런 식으로 2진수로 생각 한 뒤 2진수를 10진수로 바꾸어 마스크에 적어주어야 한다.
왜냐하면 만약 자료형이 문자형이라면 크기가 2바이트로 총 8자리 비트를 가지기 때문에
왼쪽에서 5번째 비트를 바꿀 마스크를 0001 0000으로 적거나 10진수로 적거나...
근데 10진수로 적는게 속편하다!
2. 특정 비트를 끄는 방법
플래그 &= ~마스크
3. 특정 비트가 켜져 있다면 끄고, 꺼져 있다면 켜는 방법
플래그 ^= 마스크
예를들어
int 변수 x값이 75일 때
(1) 왼쪽에서 5번째 자리의 비트값
(2) 왼쪽에서 6번째 비트를 1로 지정한 값
(3) 왼쪽에서 3번째 비트를 0으로 지정한 값
(4) 왼쪽에서 2번째 비트를 반대로 한 값
을 구하려면
#include int main(void) { unsigned char x = 75; //1 printf("%u
", x >> 4 & 1); //5번째 자리 //2 x = 75; x |= 32; //0001 0000(2) printf("%u
", x); //3 x = 75; x &= ~4; //0000 0100(2) printf("%u
", x); //4 x = 75; x ^= 2; //0000 0010(2) printf("%u
", x); return 0; }
이다.
from http://corn-bread-and-coding.tistory.com/32 by ccl(A) rewrite - 2021-12-28 18:00:56