컴퓨터 개론 2장 2절: 데이터의 표현1-정수 표현 방법

업데이트:
1 분 소요

출처 : 숭실대학교 글로벌미디어학부 정기철 교수님의 컴퓨터 개론 수업을 듣고 정리했습니다.


1. 정수의 표현

정수(Integer)

  • 셀 수 있는 수를 의미
  • 정수의 구성 : 음의 정수, 0, 양의 정수
    • 부호 없는 정수(unsigned integer) - 0과 자연수를 표현
    • 부호 있는 정수(signed interger) - 음수, 0, 양수

부호 없는 정수(unsiged Integer)

  • 부호를 생략한다는 의미로, 모든 숫자는 0 또는 양의 정수(자연수)
  • 8비트로 부호 없는 정수를 표현하면 0~255까지 나타낼 수 있음
  • N비트를 이용한 부호 없는 정수 표현은 0부터 $(2^n-1)$까지 가능
  • 부호 없는 정수에서 2진법을 이용한 사칙연산 방법은 기본적으로 10진법에서의 연산 방법과 동일
    • 덧셈 연산 : 2진법의 가장 오른쪽 비트인 최소유효비트(LSB: Least Significant Bit)부터 시작해 각 비트의 수를 더하고, 1+1로 자리올림이 발생하면 상위 자리로 1을 올리면 됨
    • 오버플로우(Overflow) : 덧셈의 결과가 8비트로 표현할 수 있는 범위를 넘어선 상황
      • 컴퓨터 내부에서는 논리적으로 정확한 결과를 냈다 하더라도, 표현 가능한 범위를 벗어났기 때문에 실제 수행 결과는 옳은 값이 아님! 즉, 계산 결과를 정확히 표현할 수 없음
      • 실제로 컴퓨터 프로그래밍 시 아주 큰 수끼리의 연산에서 오버플로우가 발생함
      • 문제는 연산 결과에 오류가 나더라도 프로그램을 계속 실행된다는 점, 틀린 값을 정확히 체크하지 않으면 최종 결과에 영향을 미침
      • 컴퓨터는 오버플로우를 감지하지 못할까? 감지할 수 있지만, 체크하지 않는다! 모든 연산마다 체크를 하게 되면 연산 속도가 너무 느려지기 때문이다.
      • Underflow? 실수 표현에서만 발생할 수 있다.

부호 있는 정수(Signed integer)

  • 부호화 절댓값(Signed-magnitude) 표현
    • 가장 왼쪽에 위치한 비트인 최대유효비트(MSB: Most Significant Bit)가 0이면 양의 정수(+0 포함)로, 최대 유효 비트가 1이면 음의 정수(-0 포함)로 표현하는 방식
    • n비트를 이용한 부호화 절댓값 표현은 -(2^(n-1) - 1) ~ +(2^(n-1) - 1)까지 가능
    • 부호화 절댓값 표현의 단점
      • 0이 +0과 -0으로 2개기 때문에 표현할 수 있는 숫자가 하나 줄어든다.
      • 부호를 일일이 따져야 하기 때문에 연산 속도가 느리다.
      • 컴퓨커 내부적으로는 부호화 절댓값 표현을 거의 쓰지 않는다.
  • 보수(Complement) 표현
    • 보수 : 두 수의 합이 진법의 밑수(N)가 되게 하는 수
      예) 10진수 2의 10의 보수는 8, 10진수 6의 10의 보수는 4
    • 2의 보수는 절댓값이 같고 부호가 다른 두 수
      예) 0000 1010(2)의 2의 보수는 1111 0110(2)
    • NOT을 이용한 2의 보수 구하기
      원래 수의 0과 1을 반대로 바꾸고, 1을 더한다.
    • 컴퓨터는 2의 보수 표현이 음수인지 양수인지 구별하지 않는다. 그냥 그 자체로 컴퓨터가 이해할 수 있는 숫자인 것이다. 음수인지 양수인지 구별하는 것은 사람이 읽기 위해서이다.

정수 표현들의 표현 가능한 범위

  • Unsgined Integer : 0 ~ $2^n-1$
  • Sign and Magnitude : -(2^(n-1) - 1) ~ (2^(n-1) - 1)
  • 2’s Complement : -2^(n-1) ~ 2^(n-1) -1

  • 컴퓨터 내부에서 곱셈 연산은 덧셈을 반복적으로 하고, 나눗셈은 뺄셈을 반복한다. 단 정수에서만!