[알고리즘] 비트연산

강아지 이름은 봄이·2023년 7월 1일
post-thumbnail

1. 비트

💡 비트는 컴퓨터가 데이터를 저장하는 가장 작은 단위 이다.

최초의 컴퓨터는 여러 개의 전구를 이용하여 정보를 표현했다. 예를 들어 전구 하나를 이용하면, 불이 켜지고 꺼지는 두 가지 상황을 표현할 수 있다. 전구 두 개를 이용하면 총 네가지의 상황을 표현할 수 있다.

그래서 불이 켜지고(1) 꺼지는(0) 상황을 비트로 표현하게 된다.

컴퓨터에서의 상황은 몇 개의 숫자 정보를 표현할 수 있는지를 말한다. 만약 비트가 2개라면 2^2인 4개의 수 (0, 1, 2, 3)를 표현할 수 있다. 비트가 8개라면 2^8인 256개의 수 (0, 1, 2, ..., 255)를 표현할 수 있다. 만약 음수도 표현을 하게 된다면 절반을 잘라서 -128부터 127까지의 수를 표현할 수 있게 된다.

2. n진수

10진수는 현실세계에서 어떠한 수를 0부터 9까지 총 10개의 수로 표현하는 방법을 말한다.
2진수는 컴퓨터에서 어떠한 수를 0과 1 총 2개의 수로 표현하는 방법을 말한다.
같은 논리로 16진수는 어떠한 숫자를 0부터 15까지 총 16개의 수로 표현하는 방법을 말한다.

그런데 "2410" 이라는 수가 16진수로 표현이 되어있다면 어떻게 해석해야 할까? 2/4/1/0 으로 표현된 것인지, 2/4/10으로 표현된건지 모호하다. 따라서 16진수의 경우, 10부터는 알파벳으로 표기한다. (10 : A, 11 : B, 12 : C, 13 : D, 14 : E, 15 : F)

따라서 2/4/10 이라는 의도로 표현된 것이 맞다면 24A라고 표기해야 올바른 방법이다.

컴퓨터가 정보를 저장하기 위해서는 비트 단위로 나눠서 연산을 해야 한다. 즉 현실세계에서 사용하는 10진수는 0과 1로 표현할 수 있는 이진수로 바꿔줘야 한다. 그렇다면 10진수를 2진수로 바꾸려면 어떻게 해야할까?

3. 비트 논리연산자

연산자별칭설명
&AND두 개의 비트 모두 1일 때만 1
|OR두 개의 비트 중 하나라도 1일때 1
^XOR두 개의 비트가 같으면 0, 다르면 1
~NOT비트값이 1이면 0, 0이면 1로 (단항연산자)

4. 컴퓨터가 음수를 표현하는 방법 : 2의 보수법

  1. 어떠한 수를 먼저 이진수로 바꿔준다.
  2. 1의 보수를 구한다.
  3. 1을 더해준다.

5. 비트 연산자 (shift)

연산자설명
>>비트를 우측으로 이동
<<비트를 좌측으로 이동

0개의 댓글