컴퓨터가 음수를 표현하는 원리
지금까지 C언어의 변수의 사용법과 기본적인 문법을 배웠습니다. 이제 어느정도 C언어를 사용한 프로그래밍의 맛보기 정도는 하셨다고 생각하시면 됩니다. 이제 좀 더 본격적인 심화과점으로 들어가려고 하는데, 그에 앞서 오늘은 컴퓨터가 어떻게 음수를 표현하는지를 한번 알아보겠습니다. 컴퓨터가 숫자를 표현하는 방법에 대해서는 이전시간에 이야기를 한번 했었습니다. 아래 포스팅을 참조해 주십시오.
https://mech19.tistory.com/121
2진법, 10진법, 16진법 그리고 변수
컴퓨터는 2진법을 사용하는데 2진법은 지수라는 개념으로 접근해야 하고 지수에 있어서 가장 중요한 것은 (X)^0 = 1이라는 것입니다. 이것은 사실 말이 되지 않는 내용이지만 수학자들 사이에서
mech19.tistory.com
음수 표현
여러분은 보수라는 개념을 알고 계신가요? 컴퓨터는 이 보수라는 개념을 이용하여 음수를 표현합니다. 먼저 컴퓨터는 2진법을 이용하여 수를 표현한다고 했었죠? 5를 2진법으로 표현한다면 0101이 되겠죠? 이때!! 0101의 1의 보수는 1010이 됩니다. 여기에 1을 더해서 1011로 만들면 우리가 지금부터 알아야 하는 2의 보수가 됩니다. 아직 뭐가뭔지 헷갈리시죠?
보수의 정의는 "어떤 수 X에 대한 Y의 보수는 X-Y로 Y에서 X를 만들기 위해 보충해야 하는 수"입니다.
이해하기 쉽게 예를 들자면 10진수 4에 대한 10의 보수는 6이고, 7에 대한 10의 보수는 3입니다. 이걸 이진법에서 2의 보수로 표현해보자면 비트를 모두 반전시킨 뒤 1을 더하면 됩니다. 예를들어 1001의 2의 보수는 0110에 1을 더한 0111이 됩니다. 이렇게 구한 보수와 1001을 더해보면 10000이 되는데 애초에 4자리 까지만이었으니 0000이 되는 것입니다. 이방법을 이용하여 음수를 표현합니다. 즉 0111이 7이라면 1001은 -7이 되는 것입니다.
그럼 여기서 한발자국 더 나아가서 int형 변수의 음수를 포함한 range는 -2,147,483,648 ~ 2,147,483,647까지 이죠. 왜 음수가 하나 더 많을까요? 그건 4자리 2진수를 기준으로 설명드리자면 1000의 2의 보수가 1000이기 때문입니다. 오늘은 이렇게 간단히 컴퓨터의 음수표현 방법을 알아보았습니다. 감사합니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
#C언어기초 #C언어음수표현 #2의보수