이진법: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
편집 요약 없음
168번째 줄: 168번째 줄:
: -----
: -----
: 1 0
: 1 0
===루트===

: 11
---------
: √ 1001
: 1
---------
: 101 0101
: 1 101
--------
: 0
== 비트 연산 ==
== 비트 연산 ==
{{본문|비트 연산}}
{{본문|비트 연산}}

2015년 8월 13일 (목) 14:27 판

이진법(二進法, binary)은 두 개의 숫자만을 이용하는 수 체계이다. 관습적으로 01의 기호를 쓰며 이들로 이루어진 수를 이진수라고 한다. 이 이진법은 라이프니츠가 발명하였다. 십진법의 1은 이진법에서는 1, 십진법의 2는 이진법에서는 10, 십진법의 3은 이진법에서는 11이다.

컴퓨터에서는 논리의 조립이 간단하고 내부에 사용되는 소자의 특성상 이진법이 편리하기 때문에 이진법을 사용한다. 디지털 신호는 기본적으로 이진법 수들의 나열이며, 컴퓨터 내부에서 처리하는 숫자는 기본적으로 이진법을 이용하기 때문에 컴퓨터가 널리 쓰이는 현대에 그 중요성이 커졌다.

표현

이진법에서는 0과 1로 모든 수를 표현한다. 컴퓨터 상에서는 각각의 자리를 비트라고 부르며, 각각의 비트는 켜져있거나 꺼져있는 두 가지 상태로 표시된다. 다음 수는 십진수 155를 이진법으로 표현한것이다.

1 0 0 1 1 0 1 1

일반적으로 이진법의 수를 십진법의 수와 구별하기위해 다음과 같은 방법을 쓴다.

100101b (b를 덧붙임)
100101(2) ((2)를 덧붙임, 주로 수학에서 쓰임)
0b100101 (앞에 0b를 덧붙임, 주로 프로그래밍 언어에서 쓰임)

이진 자료

이진자료란 이진법형식으로 표시되는 자료이다. 두가지의 대조되는 데이터를 구분할 때 유리하다. 예를 들어 생의학 실험에서 50명의 환자들의 데이터를 0(치료되지않았다), 1(치료되었다) 로 표시한다면 숫자만으로도 쉽게 자료를 구분할 수 있다.

이진수 십진수 이진수 십진수
0 0 100 4
1 1 101 5
10 2 110 6
11 3 111 7

십진법에서는 0에서 9까지의 숫자를 사용하는 데 비해, 이진법에서는 0에서 1까지의 숫자만을 사용한다. 십진법에서는 어떤 자리가 9를 넘어야 위로 자리올림을 하지만, 이진법에서는 어떤 자리가 1만 넘으면 자리올림을 한다. 따라서 이진수 오른쪽의 표와 같은 꼴로 나타난다.

이런 이유로 이진수에서는 십진수보다 자리수가 빠르게 늘어나버린다. 일반적으로 십진수 n자리를 이진수로 표현하면

자리수가 된다.

산술

십진법과 마찬가지로 이진법에서도 더하기, 빼기, 곱하기, 나누기 등의 산술연산을 할 수 있다.

더하기

자릿수 자릿수 더한 값 올림
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
두 비트를 더해주는 반가산기의 회로도

한 자리짜리 이진법인 수 2개를 더했을 때의 결과는 왼쪽의 표와 같다. 여기서 올림이라는 것은 윗 자리로 받아올려지는 수를 의미한다.

이진법에서는 수가 2개밖에 없기 때문에 더했을 때 나오는 경우도 4가지밖에 없고, 논리회로로 구성하기도 쉽다. 이를 논리회로로 구성하면 오른쪽과 같다.

더했을 때 각 자리가 1을 넘으면 받아올림된다는 규칙만 따르면 십진법에서와 마찬가지로 덧셈을 할 수 있다.


1 1 1 1 1 (받아올림)
0 1 1 0 1
+ 1 0 1 1 1
-------------
= 1 0 0 1 0 0

위의 예에서는 1101(2)(십진수로 13)과 10111(2)(십진수로 23)을 더했다. 그 결과 100100(2)가 나왔고, 이는 십진수에서 덧셈한 것과 같이 36이라는 값이다.

빼기

이진법에서 윗자리에서 수를 받아내려올 때 2씩 받아내려온다는 규칙을 지키면 십진법에서와 마찬가지로 뺄셈을 할 수 있다.

2 2 2 2 (받아내린 수)
1 1 0 1 1 1 0
− 1 0 1 1 1
----------------
= 1 0 1 0 1 1 1

보수를 이용한 또 다른 방법도 있다. 컴퓨터는 뺄셈을 할 때 이 방법을 사용한다.

0 0 0 0 1 1 0 0
− 0 0 0 0 0 0 1 0
----------------
0 0 0 0 1 1 0 0
+ 1 1 1 1 1 1 0 1
----------------
1|0 0 0 0 1 0 0 1
1
----------------
1 0 1 0

A-B가 있으면 B에 1의 보수를 적용하고 뺄셈을 덧셈으로 전환하고 계산한다. 여기에서 굵음체로 표기된 올림수가 있을 경우 그대로 1을 더하고 0일경우 더하지 말고 다시 한번 1의 보수를 적용한다.

곱하기

이진수에서의 곱하기도 십진수와 마찬가지 방법으로 한다. 아래는 두 비트를 곱했을 때 나올 수 있는 모든 경우를 나열한 것이다.

한 쪽이 0이면 무조건 0이 나오고, 한쪽이 1이면 무조건 반대쪽과 같은 수가 나온다는 성질 때문에 이진수의 곱셈은 십진수의 곱셈보다 한결 간단하다.

1 0 1 1 (A)
× 1 0 1 0 (B)
---------
0 0 0 0 ← B의 1의 자리가 0이므로 0.
+ 1 0 1 1 ← B의 10의 자리가 1이므로 A를 그대로 내려적음.
+ 0 0 0 0 ← B의 100의 자리가 0이므로 0.
+ 1 0 1 1 ← B의 1000의 자리가 1이므로 A를 그대로 내려적음.
--------------- ← 모두 더한다.
= 1 1 0 1 1 1 0

나누기

이진법에서의 나누기 역시 십진법의 나누기와 비슷하다.

1 0 1
__________
1 0 1 | 1 1 0 1 1
− 1 0 1
-----
0 1 1
− 0 0 0
-----
1 1 1
− 1 0 1
-----
1 0

루트

11
            ---------
√ 1001
1
            ---------
101 0101
1 101
             --------
0

비트 연산

비록 수와는 직접적으로 관련이 없지만, 여러 개의 비트들은 불 대수의 논리 연산들을 계산하는 데 쓰일 수 있다. 이러한 연산들을 비트 연산이라고 한다. 비트 연산에는 AND, OR, XOR, NOT , 시프트 등이 있다. 컴퓨터 상에서 이런 비트 연산들은 여러 계산을 빠르게 하는 데 쓰이기도 한다. 예를 들어 왼쪽으로 1비트 시프트하는 것은 2를 곱하는 것과 같은 효과를 가지지만, 계산속도는 훨씬 빠르다.

다른 진법으로 바꾸기

십진법

일반적으로 이진법의 번째 자리수는 크기를 갖는다. 따라서 이진법 110010101101(2)은 다음과 같이 변환된다.

이진법: 1 1 0 0 1 0 1 0 1 1 0 1
십진법: 1×211 + 1×210 + 0×29 + 0×28 + 1×27 + 0×26 + 1×25 + 0×24 + 1×23 + 1×22 + 0×21 + 1×20 = 3245

다음과 같은 방법으로도 이진법을 십진법으로 바꿀 수 있다.

전의 값 × 2 + 다음 자리 다음 값
= 0
0 × 2 + 1 = 1
1 × 2 + 1 = 3
3 × 2 + 0 = 6
6 × 2 + 0 = 12
12 × 2 + 1 = 25
25 × 2 + 0 = 50
50 × 2 + 1 = 101
101 × 2 + 0 = 202
202 × 2 + 1 = 405
405 × 2 + 1 = 811
811 × 2 + 0 = 1622
1622 × 2 + 1 = 3245

같이 보기