ㅅㅇ

진법 변환/비트 연산 본문

SW_STUDY/알고리즘

진법 변환/비트 연산

SO__OS 2022. 6. 24. 01:20

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. 비트 연산의 활용

- 컴퓨터 연산을 위한 비트 필드

- 데이터의 압축 및 암호화

- 유한 상태 기계

- 컴퓨터 통신을 위한 포트 및 소켓