이진법

Ahn9807 (토론 | 기여)님의 2023년 2월 16일 (목) 07:59 판 (새 문서: 분류: 정보 표현 == 개요 == 0과 1로 구성된 숫자의 표현이다. 예를 들어 123(기수 10) = 1111011(기수 2)로 표현할 수 있다. 어떤 기수의 숫자에서 i번째 숫자 d의 값은 다음과 같다. <math> d * Base^i </math> == LSB / MSB == LSB (Least significant bit) 의 약자로써 가장 오른쪽의 비트 0을 나타내고, MSB (Most significant bit)은 가장 왼쪽의 비트를 나타낸다. MSB는 부호나 제일 큰 지수를 나...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

0과 1로 구성된 숫자의 표현이다. 예를 들어 123(기수 10) = 1111011(기수 2)로 표현할 수 있다. 어떤 기수의 숫자에서 i번째 숫자 d의 값은 다음과 같다. [math] d * Base^i [/math]

LSB / MSB

LSB (Least significant bit) 의 약자로써 가장 오른쪽의 비트 0을 나타내고, MSB (Most significant bit)은 가장 왼쪽의 비트를 나타낸다. MSB는 부호나 제일 큰 지수를 나타내기 때문에 변경되면 엄청나게 값이 변하지만 LSB는 오직 1 만 변한다. 그래서 이런 이름이 붙여 졌다.

오버 플로우

연산 결과가 하드웨어에 구현된 비트들 만으로는 구현 불가능한 상태이다. 오버 플로우 참고

부호 비트의 표현

전자기기에서 음수는 첫자리(가장 높은 자리)의 수가 1인 것으로 나타낸다. 즉 첫 번째 숫자가 0이면 양수이고, 1이면 음수이다. 이건 그냥 컴퓨터의 정수 표기법에 대한 약속이고 진법 자체와는 관련이 없다. 1의 보수(1's complement, 1'C)[4], 2의 보수(2's complement, 2'C) 등의 방식이 있으며, 컴퓨터에서 가장 널리 사용하는 것은 2의 보수이다. 1의 보수는 양수에서 모든 비트를 반전시켜서 표현하는 것이고, 여기에 1을 더한 것이 2의 보수이다. 예를 들어보면 다음과 같다.

   0000 0101 = 숫자 5
   1111 1010 = 비트 반전 (1의 보수에서의 -5)
   1111 1010 = 250
   1111 1011 = 비트 반전에 1을 더함 (2의 보수에서의 -5)

1의 보수에서는 0000 0000 과 1111 1111 이 모두 0이 되므로 0이 두 가지로 표현되는 문제가 생긴다. 2의 보수 표기는 10진수와 상호 변환하기 가장 어려운 표기법이긴 하나, 연산에서 양수와 음수를 똑같이 취급할 수 있다는 엄청난 이점이 있다.

예를 들어 3 + (-5)를 한다고 하자. 2의 보수 표기법에서는 0000 0011 + 1111 1011이 되고 계산해보면 1111 1110 = -2가 된다. 마치 둘 다 양수인 양 더했더니 올바른 값이 나와버렸다. 이는 음수+음수도 마찬가지다. -5 + (-7) = 1111 1011 + 1111 1001 = 1 1111 0100 = 1111 0100 = -12이다. 다른 어떤 음수 표기법도 부호 확인 없이 때려넣으면 저렇게 정답이 나오지 않는다. 이렇게 연산 과정에서 부호를 고려할 필요가 없다는 점은 속도에 약간의 이익을 준다.