Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

이진수 (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.25 16:33

이진수

정의

0과 1 두 개의 숫자만을 사용하여 수를 표현하는 방법[?]

기수

2

사용 숫자

0, 1

주요 용도

디지털 전자 회로

컴퓨터 데이터 처리 및 저장

관련 분야

컴퓨터 과학

전자공학

정보 이론

상세 정보

표기법

접두사 '0b' 또는 아래첨자 (2)를 사용하여 이진수임을 표시[?]

비트

이진수의 한 자리를 나타내는 최소 정보 단위

바이트

8개의 비트로 구성된 정보 처리 단위

다른 진법과의 관계

십진수, 팔진수, 십육진수 등으로 변환 가능

논리 연산

AND, OR, NOT, XOR 등의 연산을 통해 처리

1. 개요

이진수는 0과 1이라는 두 개의 숫자만을 사용하여 수를 표현하는 기수법이다. 기수(밑수)가 2이기 때문에 2진법이라고도 불린다. 이는 사람이 일상적으로 사용하는 0부터 9까지 열 개의 숫자를 쓰는 십진법과 대비되는 체계이다.

이진수의 가장 큰 특징은 표현에 사용되는 상태가 단 두 가지라는 점으로, 이는 전기 신호의 '켜짐(1)'과 '꺼짐(0)', 자성의 '북극'과 '남극'처럼 물리적으로 구현하기 매우 용이하다. 이러한 이점 덕분에 이진수는 디지털 전자 회로와 �퓨터의 기본 언어가 되었다. 모든 �퓨터 데이터 처리와 �퓨터 데이터 저장은 궁극적으로 0과 1의 조합인 이진수 형태로 이루어진다.

이진수의 사용은 �퓨터 과학, 전자공학, 정보 이론 등 현대 기술의 핵심 분야를 이루는 기초가 된다. 복잡한 계산, 텍스트, 이미지, 소리 등 모든 형태의 정보는 최종적으로 이진 코드로 변환되어 처리되고 전송된다.

간단한 예로, 십진수의 '5'는 이진수로 '101'로 표현된다. 이는 (1 × 2²) + (0 × 2¹) + (1 × 2⁰) = 4 + 0 + 1 = 5를 의미하며, 이진수의 각 자릿값이 2의 거듭제곱으로 계산되는 원리를 보여준다.

2. 기본 원리

2.1. 비트와 자릿값

이진수에서 각 자리는 비트라고 불리며, 이는 'binary digit'의 줄임말이다. 각 비트는 0 또는 1의 값을 가진다. 이진수의 각 자릿값은 기수인 2의 거듭제곱으로 결정된다. 가장 오른쪽의 자리, 즉 최하위 비트(LSB)는 2의 0제곱(1)의 자릿값을 가지며, 왼쪽으로 한 자리씩 이동할 때마다 2의 1제곱(2), 2의 2제곱(4)과 같이 자릿값이 두 배씩 증가한다.

예를 들어, 이진수 '1011'은 각 비트의 자릿값을 곱하여 계산할 수 있다. 가장 오른쪽의 1은 1(2^0) × 1 = 1, 그 왼쪽의 1은 2(2^1) × 1 = 2, 다음의 0은 4(2^2) × 0 = 0, 가장 왼쪽의 1은 8(2^3) × 1 = 8이다. 이 값을 모두 더하면 1+2+0+8 = 11이 되어, 이진수 1011은 십진법의 11과 동일한 값을 나타낸다.

이러한 자릿값 체계는 십진법과 원리가 동일하지만, 기수가 10이 아닌 2라는 점이 다르다. 이 단순한 두 상태(0과 1)의 조합은 전자공학에서 전압의 유무나 스위치의 온오프 상태로 쉽게 구현될 수 있어, 컴퓨터와 모든 디지털 시스템의 근본적인 데이터 표현 방식으로 채택되었다.

2.2. 2의 거듭제곱 표현

이진수의 각 자릿값은 2의 거듭제곱으로 표현된다. 가장 오른쪽 자리(최하위 비트)는 2^0(1)의 자리이며, 왼쪽으로 한 자리씩 이동할 때마다 자릿값은 2^1(2), 2^2(4), 2^3(8)과 같이 2배씩 증가한다. 이는 십진법에서 각 자리가 10의 거듭제곱으로 표현되는 원리와 유사하다.

예를 들어, 이진수 '1011'은 각 자릿값과 숫자의 곱을 모두 더하여 계산할 수 있다. 가장 오른쪽의 1은 1 * 2^0 = 1, 그 왼쪽의 1은 1 * 2^1 = 2, 다음 자리의 0은 0 * 2^2 = 0, 가장 왼쪽의 1은 1 * 2^3 = 8이 되어, 총합 11이 된다. 이는 십진수 11에 해당한다.

이러한 2의 거듭제곱 체계는 디지털 회로와 컴퓨터의 기본 동작 원리와 직접적으로 연결된다. 컴퓨터 내부의 트랜지스터는 전기 신호의 유무, 즉 '켜짐(1)'과 '꺼짐(0)' 두 가지 상태만을 표현할 수 있으며, 이진수의 한 자리인 비트가 이 상태를 표현하는 최소 단위가 된다. 따라서 여러 비트를 조합하면 2의 거듭제곱 형태의 다양한 값을 표현할 수 있게 된다.

2의 거듭제곱 표현은 데이터의 크기 단위를 정의하는 데에도 널리 사용된다. 예를 들어, 8비트는 2^3 비트로 구성되어 1바이트를 이루며, 1024바이트(2^10 바이트)는 1킬로바이트로 불린다. 이처럼 컴퓨터 메모리나 저장 장치의 용량은 대부분 2의 거듭제곱과 관련된 단위로 표현된다.

3. 변환 방법

3.1. 10진수에서 2진수로 변환

10진수에서 2진수로 변환하는 가장 일반적인 방법은 2로 나누어 나머지를 기록하는 방법이다. 이 방법은 주어진 10진수를 2로 계속해서 나누어 몫이 0이 될 때까지 반복하고, 나눗셈 과정에서 발생한 나머지들을 역순으로 나열하여 최종 2진수를 얻는다. 나머지는 항상 0 또는 1이 된다. 이 과정은 컴퓨터 과학의 기본이 되는 산술 논리 장치 설계나 프로그래밍에서 수치 계산을 이해하는 데 필수적이다.

예를 들어, 10진수 13을 2진수로 변환하는 과정은 다음과 같다. 13을 2로 나누면 몫은 6, 나머지는 1이다. 몫 6을 다시 2로 나누면 몫 3, 나머지 0이다. 이 과정을 몫이 0이 될 때까지 반복하면 나머지가 순서대로 1, 0, 1, 1이 기록된다. 이 나머지들을 마지막에서부터 처음으로, 즉 역순으로 읽으면 1101(2)이 되며, 이는 10진수 13의 2진수 표현이다.

또 다른 방법으로는 2의 거듭제곱을 이용한 방법이 있다. 이 방법은 변환하려는 10진수보다 작거나 같은 가장 큰 2의 거듭제곱 값을 찾아 빼는 과정을 반복한다. 예를 들어, 10진수 13은 8(2^3), 4(2^2), 1(2^0)의 합으로 이루어져 있다. 따라서 해당하는 자릿수(2^3, 2^2, 2^1, 2^0)에 1을 표시하고 나머지 자릿수에는 0을 표시하면 1101(2)를 얻을 수 있다. 이 방법은 2진수의 각 비트가 나타내는 자릿값을 직관적으로 이해하는 데 도움이 된다.

이러한 변환 방법은 디지털 신호 처리나 마이크로프로세서의 저수준 연산을 이해하는 기초가 되며, 진법 변환 알고리즘의 대표적인 예시이다.

3.2. 2진수에서 10진수로 변환

2진수에서 10진수로 변환하는 과정은 각 비트의 자릿값을 계산하여 합산하는 방식으로 이루어진다. 2진수의 각 자리는 오른쪽에서 왼쪽으로 갈수록 2의 거듭제곱 값을 가지며, 가장 오른쪽 자리(최하위 비트)는 2의 0제곱, 즉 1의 자리이다. 각 자리의 숫자(0 또는 1)에 해당 자리의 2의 거듭제곱 값을 곱한 후, 모든 결과를 더하면 10진수 값이 얻어진다.

예를 들어, 2진수 1101을 변환하려면 다음과 같이 계산한다. 오른쪽에서 왼쪽으로 네 자리이므로 각 자리의 값은 2^3, 2^2, 2^1, 2^0이다. 이를 계산하면 (1 × 8) + (1 × 4) + (0 × 2) + (1 × 1) = 8 + 4 + 0 + 1 = 13이 되어, 10진수 13에 해당함을 알 수 있다. 이 방법은 모든 길이의 2진수에 적용 가능하다.

이 변환 방법은 컴퓨터 과학과 디지털 전자 회로에서 기본이 된다. 프로세서가 메모리에 저장된 2진수 데이터를 읽어 계산하거나, 프로그래머가 기계어나 저수준 코드를 분석할 때 필수적으로 사용된다. 또한 정보 이론에서 데이터의 크기나 값을 이해하는 데에도 활용된다.

변환 과정을 표로 정리하면 다음과 같다. 아래는 2진수 10110을 변환하는 예시이다.

2진수 자리 (왼→오)

1

0

1

1

0

자릿값 (2^n)

2^4=16

2^3=8

2^2=4

2^1=2

2^0=1

계산 (비트×자릿값)

1×16=16

0×8=0

1×4=4

1×2=2

0×1=0

10진수 결과

16 + 0 + 4 + 2 + 0 = 22

3.3. 다른 진법과의 변환 (8진수, 16진수)

2진수는 컴퓨터 과학과 디지털 전자 회로에서 가장 기본적인 수 표현 방식이지만, 사람이 직접 읽거나 작성하기에는 길이가 너무 길어 불편하다. 이를 보완하기 위해 2진수와 변환이 매우 쉬운 8진수와 16진수가 널리 사용된다. 8진수는 기수가 8이며 0부터 7까지의 숫자를 사용하고, 16진수는 기수가 16이며 0부터 9까지의 숫자와 A부터 F까지의 문자를 추가로 사용한다.

2진수를 8진수로 변환할 때는 소수점을 기준으로 좌우로 세 자리씩 묶는다. 묶인 세 자리의 2진수를 각각 0부터 7까지의 값으로 계산하면 바로 8진수가 된다. 예를 들어, 2진수 110101은 110과 101로 나누어 110은 6, 101은 5이므로 8진수 65가 된다. 반대로 8진수의 각 자릿수를 세 자리의 2진수로 풀어쓰면 2진수로 변환된다.

2진수를 16진수로 변환하는 방법도 유사하되, 네 자리씩 묶는다는 점이 다르다. 네 자리의 2진수는 0부터 15까지의 값을 표현할 수 있어 16진수의 한 자리에 정확히 대응한다. 예를 들어, 2진수 11101011은 1110과 1011로 나누어 1110은 14(16진수 E), 1011은 11(16진수 B)이므로 16진수 EB가 된다. 이 변환은 메모리 주소나 머신 코드를 사람이 읽기 쉬운 형태로 표시할 때 필수적이다.

8진수와 16진수는 2진수와의 직접적인 변환이 간단하여 프로그래밍 언어나 디버거에서 데이터를 표현하는 데 자주 활용된다. 특히 16진수는 현대 컴퓨터의 데이터가 대부분 8비트(1바이트)의 배수로 구성되기 때문에, 한 바이트(8비트)를 정확히 두 자리의 16진수로 표현할 수 있어 더욱 편리하다.

4. 연산

4.1. 덧셈

이진수의 덧셈은 0과 1 두 숫자를 사용하는 기본적인 산술 연산이다. 컴퓨터의 산술 논리 장치(ALU)는 이 원리를 바탕으로 모든 계산을 수행한다. 덧셈 규칙은 매우 간단하여, 0+0=0, 0+1=1, 1+0=1이다. 그러나 1+1의 경우, 결과는 이진수 2에 해당하므로 자릿수 0을 쓰고 상위 자리로 1을 올려주는 캐리(올림수)가 발생하여 1+1=10(이)가 된다.

다음은 두 이진수 1011(십진수 11)과 0110(십진수 6)을 더하는 과정을 보여준다. 가장 오른쪽 최하위 비트(LSB)부터 왼쪽으로 차례대로 계산한다.

자릿수 (비트 위치)

3

2

1

0

피가수 A

1

0

1

1

가수 B

0

1

1

0

캐리 입력

1

1

1

0

합 (A+B)

0

0

1

1

캐리 출력

1

1

1

0

1. 비트 0: 1 + 0 = 1. 캐리 없음.

2. 비트 1: 1 + 1 = 10. 합은 0, 캐리 1이 발생하여 비트 2로 전달.

3. 비트 2: 0 + 1 + (이전 캐리 1) = 10. 합은 0, 캐리 1이 다시 발생.

4. 비트 3: 1 + 0 + (이전 캐리 1) = 10. 합은 0, 캐리 1이 최종적으로 발생.

결과는 10001(십진수 17)이 된다. 이처럼 여러 자리의 이진수 덧셈에서는 하위 비트에서 발생한 캐리가 연쇄적으로 상위 비트로 전파될 수 있다. 컴퓨터 하드웨어는 이 과정을 전가산기의 조합으로 구현하여 고속 연산을 가능하게 한다. 이진수 덧셈은 뺄셈, 곱셈 등 다른 모든 산술 연산의 기초가 된다.

4.2. 뺄셈

이진수 뺄셈은 0과 1만을 사용하여 뺄셈을 수행하는 방법이다. 기본적인 원리는 십진수 뺄셈과 유사하지만, 자리에서 빌려오는 과정이 더 자주 발생한다. 각 자릿수에서 0에서 1을 빼야 할 경우, 왼쪽의 높은 자리에서 1을 빌려와서(2로 간주하여) 계산을 수행한다. 이 과정을 빌림이라고 하며, 이진수 뺄셈의 핵심이다.

예를 들어, 1010(십진수 10)에서 0011(십진수 3)을 빼는 과정은 다음과 같다. 가장 오른쪽 자리(최하위 비트)부터 시작한다. 첫 번째 자리: 0 - 1은 불가능하므로 왼쪽 자리에서 빌림이 필요하다. 두 번째 자리의 1에서 빌려오면, 첫 번째 자리는 2가 되고(빌려온 1), 여기서 1을 빼면 1이 남는다. 이때 두 번째 자리는 1을 빌려주었으므로 0이 된다. 두 번째 자리: 0 - 1은 다시 불가능하므로 세 번째 자리에서 빌림이 발생한다. 세 번째 자리의 0은 빌려줄 수 없으므로 네 번째 자리에서 빌려온다. 이 과정을 거쳐 최종 결과는 0111(십진수 7)이 된다.

컴퓨터 시스템에서는 이진수 뺄셈을 직접 수행하기보다는 2의 보수 표현법을 이용한 덧셈으로 처리하는 것이 일반적이다. 이는 뺄셈 연산을 덧셈 회로만으로 구현할 수 있어 디지털 회로 설계를 단순화하는 장점이 있다. 뺄셈 A - B는 A + (-B)로 변환하여 수행되며, 여기서 -B는 B의 2의 보수로 표현된다. 이러한 방식은 산술 논리 장치(ALU)의 핵심 연산 중 하나를 구성한다.

4.3. 곱셈

이진수 곱셈은 기본적으로 십진수 곱셈과 원리가 유사하지만, 사용하는 숫자가 0과 1뿐이라는 점에서 더 단순한 규칙을 따른다. 곱셈의 기본 규칙은 0 × 0 = 0, 0 × 1 = 0, 1 × 0 = 0, 1 × 1 = 1이다. 이는 논리곱(AND) 연산과 동일하다. 곱셈을 수행할 때는 십진수와 마찬가지로 각 자릿수를 곱한 후, 자릿값에 맞게 위치를 이동시켜 더하는 과정을 거친다. 이 과정에서 발생하는 자리올림은 덧셈 단계에서 처리된다.

구체적인 예로, 이진수 101(십진수 5)과 11(십진수 3)을 곱해보면, 아래쪽 수의 각 비트(1, 1)를 위쪽 수의 모든 비트와 곱하여 부분 곱을 구한다. 첫 번째 부분 곱은 101 × 1 = 101이고, 두 번째 부분 곱은 101 × 1 = 101이 된다. 두 번째 부분 곱은 첫 번째 부분 곱에 비해 한 자리 왼쪽으로 이동된 위치에 기록된다. 최종적으로 이 두 부분 곱을 이진수 덧셈 규칙에 따라 더하면 1111(십진수 15)이라는 결과를 얻을 수 있다.

컴퓨터 하드웨어에서는 이진 곱셈을 효율적으로 수행하기 위해 다양한 알고리즘과 회로 설계가 사용된다. 기본적인 방법은 위에서 설명한 부분 곱의 생성과 누적 덧셈을 반복하는 것이지만, 성능을 높이기 위해 부스 알고리즘(Booth's algorithm) 같은 더 발전된 방법도 널리 활용된다. 또한, 시프트 연산과 덧셈만으로 곱셈을 구현하는 방식은 중앙처리장치(CPU)의 산술 논리 장치(ALU) 설계에 핵심적이다.

이진 곱셈은 모든 디지털 계산의 기초가 되며, 마이크로프로세서의 성능에 직접적인 영향을 미치는 중요한 연산이다. 고성능 컴퓨팅이나 그래픽 처리 장치(GPU)에서 요구되는 복잡한 수학 연산도 결국은 이러한 기본적인 이진 연산들의 조합으로 이루어진다.

4.4. 시프트 연산

시프트 연산은 이진수의 모든 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산이다. 이 연산은 컴퓨터의 중앙처리장치에서 기본적으로 제공하는 저수준 연산으로, 산술 논리 장치를 통해 빠르게 처리된다. 주로 곱셈과 나눗셈의 대체 연산, 데이터 패킹 및 언패킹, 비트 마스크 처리 등에 활용된다.

시프트 연산은 방향에 따라 좌측 시프트와 우측 시프트로 구분된다. 좌측 시프트는 모든 비트를 왼쪽으로 한 자리 이동시키며, 최하위 비트에는 0이 채워진다. 이는 수학적으로 해당 이진수에 2를 곱하는 효과를 낸다. 예를 들어, 이진수 1011(10진수 11)을 좌측으로 한 번 시프트하면 10110(10진수 22)이 된다. 반대로 우측 시프트는 모든 비트를 오른쪽으로 한 자리 이동시키며, 최상위 비트에는 0 또는 1(부호 유지)이 채워질 수 있다. 이는 2로 나눈 몫을 구하는 효과가 있다.

시프트 연산의 구체적인 동작 방식은 논리 시프트와 산술 시프트로 나뉜다. 논리 시프트는 부호를 고려하지 않고 빈 자리에 항상 0을 채운다. 산술 시프트는 우측 시프트 시 최상위 비트(부호 비트)의 값을 유지하여 2의 보수로 표현된 음수의 나눗셈을 정확하게 수행할 수 있도록 한다. 또한, 순환 시프트는 벗어난 비트를 반대쪽 끝으로 이동시키는 방식으로, 데이터의 순환 구조를 다룰 때 사용된다.

이러한 시프트 연산은 고급 프로그래밍 언어에서도 <<(좌측 시프트), >>(우측 시프트) 등의 연산자로 제공되어, 성능 최적화가 필요한 저수준 프로그래밍이나 임베디드 시스템 개발에서 빈번히 사용된다.

5. 컴퓨터에서의 활용

5.1. 데이터 표현 (정수, 문자)

컴퓨터는 모든 데이터를 이진수로 표현한다. 가장 기본적인 데이터 표현은 정수 표현이다. 양의 정수는 일반적인 이진수 체계로 표현되며, 음의 정수를 표현하기 위해서는 2의 보수와 같은 특별한 방법이 사용된다. 이는 덧셈과 뺄셈을 동일한 회로로 처리할 수 있게 해주어 컴퓨터 설계를 단순화한다.

문자와 같은 비수치 데이터도 이진수로 표현된다. 각 문자에 고유한 숫자 코드를 할당하는 문자 인코딩 방식을 사용하는데, 대표적인 예로 ASCII 코드가 있다. ASCII는 7비트를 사용하여 영문 알파벳, 숫자, 구두점 및 제어 문자를 표현한다. 더 많은 문자를 포함하기 위해 확장된 유니코드 표준이 개발되었으며, 이는 전 세계의 다양한 언어와 기호를 표현할 수 있다.

컴퓨터 내부에서는 이러한 모든 데이터가 최종적으로 비트의 연속, 즉 0과 1의 패턴으로 저장되고 처리된다. 메모리의 한 칸이나 CPU가 한 번에 처리하는 데이터의 기본 단위는 바이트(通常 8비트)로 구성되며, 여러 바이트가 조합되어 더 큰 숫자나 복잡한 데이터를 표현한다.

5.2. 논리 연산 (AND, OR, XOR, NOT)

논리 연산은 이진수로 표현된 데이터를 처리하는 기본적인 방법이다. 컴퓨터의 디지털 회로와 프로그래밍에서 두 개의 비트 값을 입력받아 하나의 비트 값을 결과로 내는 연산을 의미한다. 가장 기본적인 논리 연산으로는 논리곱(AND), 논리합(OR), 배타적 논리합(XOR), 그리고 부정(NOT)이 있다.

논리곱(AND) 연산은 두 입력 비트가 모두 1일 때만 결과가 1이 되고, 그 외의 경우에는 0이 된다. 논리합(OR) 연산은 두 입력 비트 중 적어도 하나가 1이면 결과가 1이 되며, 둘 다 0일 때만 0이 된다. 배타적 논리합(XOR) 연산은 두 입력 비트의 값이 서로 다를 때 결과가 1이 되고, 같을 때는 0이 된다. 부정(NOT) 연산은 단일 입력을 받아 그 값을 반대로 뒤집는 단항 연산으로, 입력이 0이면 1을, 1이면 0을 출력한다.

이러한 논리 연산은 컴퓨터 산술의 기초를 이루며, 가산기나 비교기 같은 논리 회로를 구성하는 데 사용된다. 예를 들어, 반가산기는 XOR 연산으로 합(Sum) 비트를, AND 연산으로 자리올림(Carry) 비트를 생성한다. 또한 마스크(Masking) 작업이나 플래그 비트 검사, 암호화 알고리즘, 에러 검출 코드 등 다양한 컴퓨터 과학 및 디지털 시스템 분야에서 핵심적으로 활용된다.

논리 연산은 프로그래밍 언어에서도 논리 연산자로 제공되어 조건문과 반복문의 흐름을 제어하는 데 쓰인다. C 언어나 자바 같은 언어에서는 비트 단위 연산자(&, |, ^, ~)와 논리 연산자(&&, ||, !)로 구분되어 사용되며, 각각 비트 연산과 불린 연산에 적용된다.

5.3. 메모리 주소 지정

메모리 주소 지정은 컴퓨터가 주기억장치에 저장된 데이터에 접근하기 위해 사용하는 기본적인 메커니즘이다. 이때 각 메모리 위치는 고유한 주소를 가지며, 이 주소는 이진수로 표현된다. 중앙처리장치는 실행할 명령어나 처리할 데이터가 위치한 메모리 주소를 이진 형태로 지정하여 메모리 컨트롤러에 전달하고, 컨트롤러는 해당 주소에 해당하는 물리적 위치에서 데이터를 읽거나 쓴다.

주소 버스의 폭, 즉 사용되는 이진수 비트의 수에 따라 컴퓨터 시스템이 직접 주소 지정할 수 있는 메모리의 최대 용량이 결정된다. 예를 들어, 32비트 주소 체계는 2의 32제곱, 즉 약 43억 개의 고유 주소를 표현할 수 있어 이론상 최대 4 기가바이트의 메모리 공간을 직접 지정할 수 있다. 64비트 주소 체계는 이보다 훨씬 더 방대한 주소 공간을 제공한다.

메모리 주소 지정은 단순히 데이터의 위치를 가리키는 것을 넘어, 가상 메모리 시스템에서 물리적 주소와 논리적 주소를 변환하는 기초가 되기도 한다. 또한 캐시 메모리나 메모리 관리 장치의 동작에서도 핵심적인 역할을 한다. 이처럼 이진수로 표현된 메모리 주소는 컴퓨터 아키텍처의 근간을 이루며, 모든 프로그램 실행과 데이터 처리의 토대를 제공한다.

6. 특수한 표현법

6.1. 부호 있는 정수 표현 (2의 보수)

부호 있는 정수를 표현하는 가장 일반적인 방법은 2의 보수 표현법이다. 이 방법은 양수와 음수를 모두 표현할 수 있으며, 덧셈과 뺄셈을 동일한 논리 회로로 처리할 수 있어 컴퓨터 산술 논리 장치 설계에 효율적이다.

2의 보수 표현법에서 가장 왼쪽 비트는 부호 비트로 사용된다. 이 비트가 0이면 양수, 1이면 음수를 의미한다. 양수를 2의 보수로 표현하는 방법은 해당 수의 일반적인 이진수 표현과 동일하다. 예를 들어, 4비트로 숫자 5를 표현하면 '0101'이 된다.

음수를 표현하려면 먼저 해당 양수의 모든 비트를 반전시킨 후(1의 보수), 그 결과에 1을 더한다(2의 보수). 예를 들어, -5를 표현하려면 먼저 5('0101')의 비트를 반전시켜 '1010'을 만들고, 여기에 1을 더해 '1011'을 얻는다. 이 '1011'이 4비트 체계에서 -5의 2의 보수 표현이다. 이 방식의 주요 장점은 뺄셈 연산을 덧셈 연산으로 처리할 수 있다는 점이다. A - B를 계산할 때, A에 B의 2의 보수(즉, -B)를 더하기만 하면 된다.

표현법

비트 패턴 (4비트)

십진수 값

부호-크기

0101

+5

부호-크기

1101

-5

2의 보수

0101

+5

2의 보수

1011

-5

2의 보수 표현의 한 가지 특징은 표현 가능한 범위가 비대칭적이라는 것이다. 예를 들어, 8비트로는 -128부터 +127까지 표현할 수 있다. 이는 0을 포함해 총 256개의 서로 다른 값을 표현할 수 있음을 의미한다. 이 표현법은 마이크로프로세서와 프로그래밍 언어에서 정수 연산의 표준으로 널리 채택되어 있다.

6.2. 고정소수점과 부동소수점

고정소수점 표현은 소수점의 위치를 미리 정해놓고 숫자를 표현하는 방식이다. 예를 들어, 16비트를 사용할 때 상위 8비트는 정수부, 하위 8비트는 소수부로 고정하는 방식을 말한다. 이 방식은 하드웨어 구현이 간단하고 연산 속도가 빠르다는 장점이 있으나, 표현 가능한 수의 범위와 정밀도가 제한적이라는 단점이 있다. 따라서 표현 범위가 좁은 특정 임베디드 시스템이나 디지털 신호 처리 분야에서 주로 사용된다.

반면, 부동소수점 표현은 수를 가수부, 지수부, 부호부로 나누어 표현하는 방식이다. 이는 과학적 표기법을 이진수 체계에 적용한 것으로, 매우 큰 수나 매우 작은 수를 효율적으로 표현할 수 있다. 대표적인 표준인 IEEE 754는 단정밀도(32비트)와 배정밀도(64비트) 형식을 정의하며, 컴퓨터의 CPU나 GPU에 내장된 부동소수점 연산 장치(FPU)가 이 표준에 따라 연산을 처리한다.

두 방식의 가장 큰 차이는 유연성에 있다. 고정소수점은 소수점 위치가 고정되어 있어 항상 동일한 절대 정밀도를 보장하지만, 표현 범위가 좁다. 부동소수점은 지수부를 통해 소수점의 위치를 '뜨게'(float) 할 수 있어 상대 정밀도를 유지하면서 넓은 범위의 수를 표현할 수 있으나, 하드웨어 구현이 복잡하고 오차가 누적될 수 있다. 현대의 범용 컴퓨팅 환경에서는 넓은 표현 범위를 필요로 하는 과학 계산이나 그래픽스 처리에 부동소수점이 필수적으로 사용된다.

7. 관련 문서

  • 위키백과 - 이진법

  • 위키백과 - 논리 회로

  • 위키백과 - 불 대수

  • 위키백과 - 디지털 신호 처리

  • 위키백과 - 컴퓨터 데이터 저장

  • 위키백과 - 진법

  • 위키백과 - 비트

  • 위키백과 - 바이트

리비전 정보

버전r1
수정일2026.02.25 16:33
편집자unisquads
편집 요약AI 자동 생성