ㅅㅇ
진법 변환/비트 연산 본문
1. 진법 변환
1. 진법이란?
수를 셀 때 자릿수가 올라가는 단위를 기준으로 하는 셈법의 총칭
왜 진법을 사용할까?
CPU는 우리가 쓰고 있는 10진법이 아닌 2진법을 사용하고 있다. 0과 1로서 행동을 처리한다.
2. 진법 변환
진법 변환은 말 그대로 우리가 지금쓰고 있는 10진법의 수를 2진법이나, 8진법으로 바꾸는걸 의미한다.
1) 10 진법 = > 2진법
- bin 함수
bin(10)
- b : 2진법을 의미. binary 의 약자
0b1010
2) 10진법 = > 8진법
- oct(95)
oct(95)
- 8진법을 의미 octal 의 약자
0o137
3) 10진법 = > 16진법
16 개의 숫자를 사용하는 16진법의 나머지 6개의 숫자는?
0 1 2 3 4 5 6 7 8 9 a b c d e f
- hex()
hex(350)
- 16진법을 의미 hex의 약자
0x15e
그 외의 진법들의 변환?
위 세 개는 사용빈도가 높다.
그 외에는 내장 함수로 구축되어 있지 않아 필요하다면 별도로 함수로 제작해야 한다.
4) n진법 = > 10진법 : int()
# 2진법 = > 10진법
int(0b1101) # 13
# 8진법 = > 10진법
int(0o73) #59
# 16진법 = > 10진법
int(0x7e) # 126
2. 비트 연산
비트연산은 한 개 혹은 두 개의 2진수에 대해 비트단위로 적용되는 연산
1. 비트 연산의 종류
1) AND &
각각의 자릿수를 비교하여 둘 다 1일 경우 1, 아니면 0을 반환
bin(0b1101 & 0b1011)
'0b1001'
2) OR |
각각의 자릿수를 비교하여 둘 중 하나가 1일 경우 1, 아니면 0을 반환
bin(0b1101 | 0b1011)
'0b1111'
3) XOR ^
각각의 자릿수를 비교하여 다르면 1, 같으면 0을 반환
bin(0b1101 ^ 0b0011)
'0b1110'
4) NOT ~
비트 반전 연산자로 1은 0으로 1로 변환한다.
= > 값 에 1을 더한 뒤 +-부호를 바꿔준다.
bin(~0b0111)
'-0b1000'
5) SHIFT << , >>
<< : 비트 이동 연산자로 왼쪽으로 주어진 수만큼 옮긴다.
>> : 비트 이동 연산자로 오른쪽 주어진 수만큼 옮긴다.
2. 비트 연산의 활용
- 컴퓨터 연산을 위한 비트 필드
- 데이터의 압축 및 암호화
- 유한 상태 기계
- 컴퓨터 통신을 위한 포트 및 소켓
'SW_STUDY > 알고리즘' 카테고리의 다른 글
(백준) 팩토리얼 진법 (0) | 2022.06.28 |
---|---|
(프로그래머스) 비밀지도 (0) | 2022.06.28 |
(프로그래머스) 기능 개발 _ python (0) | 2022.06.09 |
(프로그래머스) 주식가격 _ python (0) | 2022.06.01 |
알고리즘 이론 : 스택/큐 (0) | 2022.05.31 |