////
Search
Duplicate
🪛

Chapter 02. 컴퓨터는 2진수만 사용한다구요!

01. 컴퓨터가 2진수로 변환된 데이터만 취급하는 이유

컴퓨터의 내부는 집적 회로로 구성되어 있으며 이에 달린 모든 핀은 보통 직류 전압 0V+5V 중 하나의 전압을 값으로 가지게 된다. 따라서 핀 1개로는 2개의 상태만 나타낼 수 있다.
이러한 집적 회로의 특성 때문에 컴퓨터는 필연적으로 모든 정보를 2진수로 만든 후 처리할 수 밖에 없다.

02. 아리송한 2진수의 진정한 의미

2진수는 어떤 특징을 가지고 있는 수일까? 2진수는 2를 기수로 해서 수를 세는 방법이다.

03. 자리를 자유자재로 옮겨다니는 시프트 연산

일반적으로 사칙 연산은 2진수에서도 10진수처럼 이뤄진다.
시프트 연산이란 2진수로 표현된 수의 각 자리 숫자를 좌우로 미는 연산이다.
오른쪽 시프트와 왼쪽 시프트가 존재하며 1회의 연산으로 여러 개의 자리를 시프트하는 일도 가능하다.
시프트 연산을 통해 자리를 옮김으로써 곱셈이나 나눗셈 대용으로 사용할 수 있다.

04. 보수는 1과 0을 바꾼 후 +1을 하라!

왼쪽 시프트의 경우, 빈자리에 0이 들어가게 되나 오른쪽 시프트의 경우, 0과 1인 경우 두가지가 존재한다.
이를 구분해서 사용하는 방법은 2진수로 음수를 나타내는 방법을 생각해보면 알 수 있다.
2진수에서 음수를 나타내는 일반적인 방법은 최상위 비트를 사용하는 것인데, 부호 비트가 0인 경우에는 양수를 나타내고 1인 경우에는 음수를 나타낸다고 약속했다.
뺄셈을 표현할 때는 2의 보수를 취한 형태를 더해서 표현한다.

05. 논리 산술 오른쪽 시프트의 작지만 큰 차이

2진수의 값을 부호가 있는 수로 연산하는 경우에는 시프트하기 전, 부호 비트의 값을 넣는데, 이를 산술 오른쪽 시프트라고 부른다.
보수로 표현된 음수의 경우에는 오른쪽 시프트 후, 빈 상위 자리에 1을 넣음으로써 부호를 붙인다.
부호 확장이란, 가령 8자리의 2진수를 값을 바꾸지 않고 16자리로 변환하는 등의 행위를 뜻하는데, 부호 비트의 값으로 상위 자리를 채우면 된다.

06. 그림으로 풀어보는 논리 연산

컴퓨터가 수행할 수 있는 연산은 산술 연산과 논리 연산으로 나뉘는데, 논리 연산에는 논리 부정, 논리곱, 논리합, 배타적 논리합의 네 종류가 있다.
논리 부정은 0을 1로, 1을 0으로 반전시킨다.
논리 곱은 둘 다 값이 1인 경우, 연산 결과를 1로 만들고 나머지는 0으로 만든다.
논리 합은 적어도 한 쪽이 1인 경우, 연산 결과를 1로 만들고 그 이외의 경우를 0으로 만든다.
배타적 논리합은 a와 b가 다를 때, 연산 결과가 1이 되고 그 이외의 경우에는 연산 결과가 0이 된다.