하트위키
최근 변경
최근 토론
임의 문서
도구
최근 변경
2진수
(r1 문단 편집)
[오류!]
편집 권한이 부족합니다. 로그인된 사용자(이)여야 합니다. 해당 문서의
ACL 탭
을 확인하시기 바랍니다.
닫기
RAW 편집
== 표현법 == xxx(2)와 같은 형태로 표기한다. 예를 들어 2는 한 자리 올려서 10(2), 6은 110(2)이 된다. 그 외에 숫자 끝에 아래첨자로 2를 작성하여 1100,,2,,처럼 2진수임을 나타내는 방식도 있다. 컴퓨터 공학을 전공하는 사람들 중에는 이진수를 쓰고 뒤에 B를 붙이는 경우도 있는데, 이는 어셈블리어에서 2진수를 나타낼 때 1100B 형식으로 작성하기 때문이다. 전자 기기에서 음수는 첫 자리(가장 높은 자리)의 수가 1인 것으로 나타낸다. 즉 첫 번째 숫자가 0이면 양수이고, 1이면 음수이다. 이건 그냥 컴퓨터의 정수 표기법에 대한 약속이고 진법 자체와는 관련이 없다. 1의 보수(1's complement, 1'C)[* 補數, complement], 2의 보수(2's complement, 2'C) 등의 방식이 있으며, 컴퓨터에서 가장 널리 사용하는 것은 2의 보수이다. 1의 보수는 양수에서 모든 비트를 반전시켜서 표현하는 것이고, 여기에 1을 더한 것이 2의 보수이다. 예를 들어보면 다음과 같다. * {{{0000 0101}}} = 숫자 5 * {{{1111 1010}}} = 비트 반전 (1의 보수에서의 -5) * {{{1111 1011}}} = 비트 반전에 1을 더함 (2의 보수에서의 -5) 1의 보수에서는 0000 0000과 1111 1111이 모두 0이 되므로 0이 두 가지로 표현되는 문제가 생긴다. 2의 보수 표기는 10진수와 상호 변환하기 가장 어려운 표기법이긴 하나[* 그래봤자 별거 없다. 비트 반전시키고 1 더하면 끝이다.], 연산에서 양수와 음수를 똑같이 취급할 수 있다는 엄청난 이점이 있다. 예를 들어 3 + (-5)를 한다고 하자. 2의 보수 표기법에서는 0000 0011 + 1111 1011이 되고 계산해 보면 1111 1110 = -2가 된다. 마치 둘 다 양수인 양 더했더니 올바른 값이 나와버렸다. 이는 음수+음수도 마찬가지다. -5 + (-7) = 1111 1011 + 1111 1001 = 1 1111 0100 = 1111 0100 = -12이다. 다른 어떤 음수 표기법도 부호 확인 없이 때려 넣으면 저렇게 정답이 나오지 않는다. 이렇게 연산 과정에서 부호를 고려할 필요가 없다는 점은 속도에 약간의 이익을 주는데, 덧셈과 뺄셈이라는 연산은 CPU 내에서 10진수로 출력하기 따위와는 비교가 불가능할 정도로 많이 하는 연산이므로 컴퓨터는 내부적으로 2의 보수 표기법을 쓴다.
Liberty
|
the tree