백엔드 개발 공부 일지
Alogorithm _ 4. 진법변환, 비트연산 본문
● 진법변환
진법이란?
수를 셀 떄 자릿수가 올라가는 단위를 기준으로 하는 셈법의 총칭, 사용하는 숫자의 개수가 진법의 숫자를 의미
진법은 왜사용할까?
우리는 10진법을 사용하고 컴퓨터는 기본적으로 2진법을 사용하는것으로 알려져있다.
CPU내부적으로 신호에 켜지고 꺼짐에 따라 0과 1로 처리한다.
진법변환하기
이미 변환하는 법은 알고 있기 때문에 프로그래밍에서 어떤식으로 표현되는지만 확인하자.
2진법 : bin(10) ==> '0b1010'
8진법 : oct(95) ==> '0o137'
16진법 : hex(350) ==> '0x15e'
10진법 : int(0b1101) ==>13
● 비트연산
한 개 혹은 두개의 이진수에 적용되는 연산
비트연산 종류
& : 각각의 자릿수를 비교하여 둘다 1일경우1, 아니면 0을 반환한다.
| : 각각의 자릿수를 비교하여 둘 중 하나가 1일 경우 1, 아니면 0을 반환한다.
^ : 각각의 자릿수를 비교하여 다르면1, 같으면 0을 반환한다.
~ : 비트 반전 연산자로 1은 0으로 0은 1로 변환한다. (음수의 표현을 처리하기 위함)
Not연산자는 2진수의 음수 개념을 알아야한다.
~0b0010 는 -0b0011이다
(기존의 값에서 1을 더한뒤 부호를 바꾼것과 동일)
<< : 비트 이동 연산자로 왼쪽으로 주어진 수만큼 옮긴다
bin(0b11<<3) ==> 0b11000
>> : 비트 이동 연산자로 오른쪽 주어진 수만큼 옮긴다.
bin(0b1100>>2)==>0b11
진법 변환과 비트연산은 알고리즘 문제의 출제빈도는 낮지만 and, or, xor 은 잘 익혀두는 것이 좋다.
컴퓨터는 십진법의 수의 or연산도 2진법으로 변환후 비트연산을 진행한 다음 십진법으로 변환해 반환하여 준다.

