C++에서 음수 값 표현하기

Mohd Mohtashim Nawaz 2023년10월12일
  1. C++에서 음수 값을 나타내는 방법
  2. C++에서 비트 이동을 사용한 최대 크기의 음의 정수
  3. 결론
C++에서 음수 값 표현하기

C++는 양수 값과 음수 값을 모두 나타낼 수 있습니다. 이 문서에서는 C++가 음수 값을 나타내는 방법에 대해 설명합니다.

C++에서 음수 값을 나타내는 방법

C++에서 음수 값을 나타내는 규칙은 없습니다. 따라서 공급업체는 C++에서 음수 값을 나타내기 위해 구현 세부 정보를 선택할 수 있습니다.

그러나 음수를 나타내는 세 가지 일반적인 방법이 있습니다.

  1. 부호 있는 크기 - 부호 있는 숫자를 나타내는 데 가장 적게 사용되는 방법입니다. 이 방법에서는 숫자의 부호를 나타내기 위해 특수 비트가 고정됩니다.

    나머지 비트는 숫자의 크기를 나타냅니다. 그러나 이 방법은 특히 음수에 대한 산술 연산을 수행할 때 컴퓨터에 구현될 때 심각한 문제가 있습니다.

  2. 1의 보수 - 이 방법은 해당 양수의 비트 표현에서 0비트를 1로 또는 그 반대로 변환하여 음수를 표현한다.

    맨 왼쪽 비트는 숫자의 부호를 나타냅니다. 0은 양의 부호를 나타내고 1은 음의 부호를 나타냅니다.

    그러나 이 방법은 이 방법을 사용하는 동안 +0과 -0의 두 가지 다른 표현이 있다는 단점이 있습니다.

  3. 2의 보수 - 이것은 음수를 나타내는 가장 많이 사용되는 방법입니다. 이 방법에서는 부호를 나타내기 위해 부호 비트를 고정합니다.

    음수를 만나면 비트 표현이 계산됩니다. 그 후 비트가 뒤집히고 1이 추가됩니다.

    예를 들어 보겠습니다.

    Number: -6
    Sign: -ve so sign bit = 1
    Bitwise representation of 6: 000110
    Two's complement: 111001+1 = 111010
    So the number is represented as 1111010
    

이 방법은 1의 보수 방법의 단점을 극복합니다.

C++에서 비트 이동을 사용한 최대 크기의 음의 정수

부호 비트를 제외한 모든 비트가 1이 되도록 비트를 이동하여 정수 데이터 유형의 최대값을 얻을 수 있습니다.

예를 들어 8비트 정수 표현이 있습니다. -1의 표현은 아래와 같습니다.

Number: -1
Sign: -ve so sign bit = 1
Bitwise representation of 1: 000 0001
Two's complement: 111 1110 + 1 = 111 1111
So -1 is represented as 1111 1111.

-1을 한 자리 왼쪽으로 이동하면 이진 표현은 0111 1111이 됩니다.

이것은 최대 수를 나타냅니다. 비트를 반대로 하면 가장 작은 음수(최소값)를 얻을 수 있습니다.

코드를 보자.

#include <iostream>

using namespace std;

int getLargest() {
  int num = -1u >> 1;
  return num;
}

int getSmallest() {
  int num = -1u >> 1;
  num = ~num;

  return num;
}

int main() {
  cout << "Maximum value: " << getLargest() << endl;
  cout << "Minimum value:" << getSmallest() << endl;
  return 0;
}

출력:

Maximum value: 2147483647
Minimum value:-2147483648

결론

정수의 최대값과 최소값은 C++ 컴파일러 공급업체와 시스템에 따라 다를 수 있습니다. 이 문서의 예는 32비트 정수 표현에 대한 결과를 보여줍니다.

관련 문장 - C++ Number