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이 된다.