알고리즘 특강 Week4: 진법변환/비트연산
진법변환
10진법 → 2진법
bin(10진수)
10진법 → 8진법
oct(10진수)
10진법 → 16진법
hex(10진수)
n진법 → 10진법
int(n진수)
비트연산
한 개 혹은 두 개의 이진수에 적용되는 연산
특히 AND, OR, XOR 연산의 경우 비교적 드물지 않게 이용된다.
종류
&
AND 연산자: 각 2진수의 자릿수를 비교하여 둘 다 1일 경우에만 1 반환, 나머지는 0 반환
0b1101 & 0b1011 = 0b1001
|
OR 연산자: 각 2진수의 자릿수를 비교하여 둘 다 0일 경우에만 0 반환, 나머지는 1 반환
0b1101 | 0b1011 = 0b1111
^
XOR 연산자: 각 2진수의 자릿수를 비교하여 다르면 1, 같으면 0 반환
0b1101 ^ 0b1011 = 0b0110
~
NOT 연산자: 비트 반전, 1은 0으로, 0은 1로 변환
- 주의: 2진수의 경우 1을 더한 뒤 부호를 바꿔준다.
- 이는, 2진수의 음수개념 때문.
- ex)
bin(~0b0010) = -0b0011
- 0b0010를 비트반전하면 0b1101인데 이는 10진수에서 -3을 의미한다.
- 10진수의 3은 2진법으로 0b0011이다.
- 따라서 0b0010에 ~연산을 하면 -0b0011 이 되는 것이다.
<<, >>
SHIFT 연산자
<<
비트 이동 연산자(왼쪽으로 주어진 수 만큼 이동)bin(0b11<<3) = 0b11000
bin(0b1100<<2) = 0b110000
>>
비트 이동 연산자(오른쪽으로 주어진 수 만큼 이동)bin(0b11>>1) = 0b1
bin(0b1100>>2) = 0b11
10진수의 비트연산
ex) 35 | 5
→ 2진수로 우선 전환: 100011 | 101
→ 비트연산: 100111
→ 다시 10진수로 전환: 39
비트연산의 활용
- 컴퓨터 연산을 위한 비트 필드
- 데이터 압축 및 암호화
- 유한 상태 기계
- 컴퓨터 통신을 위한 포트 및 소켓
Leave a comment