a xor a = 모든 비트를 0으로 만든다.
xor 3번하면 a, b 변수를 서로 바꿀 수 있다.
a = a^b
b = a^b
a = a^b
2진수가 짝수인지 홀수인지 확인하려면 맨 마지막 비트(2^0 = 1) 이 1인지 확인하면 알 수 있다. 0이면 짝수, 1이면 홀수이다. 나머지 비트는 모두 짝수이다.
마스크 - 비트 필드에 대한 비트 연산을 할 때 사용하는 데이터이다.
비트 마스킹 - 마스크를 이용해서 특정 비트 값을 뽑아오거나 반전시키는 행위이다. 비트 마스킹을 통해 양수와 음수(0x80000000), 짝수와 홀수(0x1)를 확인할 수 있다.
비트 플래그 - 비트 필드가 여러개 모인 것을 의미한다. 1바이트의 경우 8개 상태를 저장할 수 있다. 각각 하나의 불리언처럼 사용한다. 적은 수의 비트로 많은 상태를 표현할 수 있다.(INT면 32개 상태 저장) 비트 연산으로 빠르게 계산이 가능하다.
특정 플래그를 키기 위해서는 마스크(키고 싶은 자리를 1로)를 만들고 OR 연산을 한다. 특정 플래그를 끄기 위해서는 마스크(끄고 싶은 자리를 1로)를 만들고 NOT(반전하면 끄고 싶은 자리만 0)을 한 다음 AND 연산을 한다. 특정 플래그를 토글하기 위해서는 마스크(토글하고 싶은 자리를 1로)를 만들고 XOR 연산을 한다.
데이터 패킹 - 사용하는 용량을 줄이기 위해 사용한다. 변수 하나에 비트 플래그를 저장한다. 대신 가독성은 떨어진다. 정렬의 속도를 높일 수 있다.(기수 정렬 - radix, 자리수가 크면 무조건 큰 수인 것을 활용)
2의 승수는 반드시 1이 하나이다.(2^1 = 10, 2^2 = 100, 2^3 = 1000)
알파벳 대문자에서 소문자로 바꿀 때 5번째 비트를 1로 만들어주면 된다.(ASCII 코드에서 서로 32만큼 차이 나서 2^5로 5번째 비트 변경)
'프로그래밍 > 이산 수학' 카테고리의 다른 글
벡터, 튜플, 행렬 (0) | 2023.01.17 |
---|---|
수학적 귀납법, 재귀 (0) | 2023.01.15 |
과학적 사고 방식 (0) | 2023.01.11 |
조건 명제, 증명 (0) | 2023.01.08 |
불 대수 (0) | 2023.01.07 |