SW개발

정수 데이터의 표현 방식

박종명 2023. 9. 27. 08:43
728x90

이 글은 제가 과거에 운영했던 사이트인 http://dotnet.mkexdev.net 의 글을 옮겨온 것입니다.
그 전에 운영했었던 사이트(mkex.pe.kr)은 흔적도 없이 사라 졌습니다. 그속의 글들도 모두...
그래서 이 사이트도 사라지기 전에 옮기고 싶은 글을 조금씩 이 블로그로 이동시키려 합니다.
(원본글) http://dotnet.mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=9&ID=96

---

이제 컴퓨터가 정수 데이터를 표현하는 방식에 대해 알아 봅니다. 
 
* 데이터
컴퓨터가 표현 하는 모든 데이터는 2진수로 표현되는 것을 알고 있습니다. 이때 데이터란 정수나 실수처럼 수 일수도 있고 문자, 사운드, 동영상 등 컴퓨터가 표현하는 모든 것을 의미 합니다.  현재 이렇게 글을 작성하고 있는 것도 우리들 눈에는 문자로 보이지만 컴퓨터는 1 과 0 의 조합으로 인식합니다.

* 데이터 표현 단위
컴퓨터가 데이터를 나타내는 최소 단위는 비트입니다. 이 비트는 0 과 1 중 한 값을 저장할 수 있는 메모리 공간입니다.
이 비트들이 모여 바이트를 이루며 바이트가 모여 Kbyte 가 되며 Mbyte, Gbyte, 가 됩니다.
8 bit -> 1 byte 입니다. 아래는 8 bit(1byte) 메모리에 숫자 7이 저장된 모습입니다



1 비트에는 0 또는 1 을 표현할 수 있습니다. 이 말은 1 비트로 표현 가능한 수가 최대 2가지란 말이 됩니다.
1 + 1 비트, 즉 2 비트가 표현 할 수 있는 최대 가지 수는 ( 2 * 2) = 4 가지가 됩니다. 이와 같이 N 비트로 표현
할 수 있는 최대 데이터 가지 수는 2의 n 개가 됨을 알 수 있습니다

참고로 비트는 정보를 표현하는 최소 단위라고 하며 바이트는 문자를 나타내는 최소 단위라고 합니다 
 
 
* 컴퓨터의 정수 표현 방식
정수란 0을 포함한 음과 양의 소수가 아닌 수를 의미합니다.

1. 양의 정수 표현 방식
닷넷에서의 대표적인 정수는 short 와 int 가 있습니다. 각각 2byte, 4byte 로 정수를 저장합니다
단, 모든 수의 가장 왼쪽 비트는 부호 저장용으로 사용됩니다. 이를 부호 비트라 합니다 (0 : 양수 , 1: 음수)
이 부호 비트를 MSB(Most Significant Bit) 라고 합니다
아래는 short 형 수 15 가 저장된 메모리 구조입니다 ( 노란색 비트는 부호비트 입니다)



2. 음의 정수 표현 방식
음수를 표현 할 때는 단순히 부호비트만 변경하면 되는 것이 아닙니다. 수학적으로 음수는 양수의 반대되는 값 ,
즉 양수N + 음수N = 0 이 되면 음수가 되는 것입니다. 컴퓨터는 이런 음수를 양수의 2의 보수로 표현합니다.
(물론 음수의 2의 보수는 다시 양수가 됩니다) 2의 보수 구하는 식 => 1의 보수 구하기 + 1 더하기 위의 15의 2의
보수를 구해 보겠습니다