C++에서 음수 값 표현하기
C++는 양수 값과 음수 값을 모두 나타낼 수 있습니다. 이 문서에서는 C++가 음수 값을 나타내는 방법에 대해 설명합니다.
C++에서 음수 값을 나타내는 방법
C++에서 음수 값을 나타내는 규칙은 없습니다. 따라서 공급업체는 C++에서 음수 값을 나타내기 위해 구현 세부 정보를 선택할 수 있습니다.
그러나 음수를 나타내는 세 가지 일반적인 방법이 있습니다.
-
부호 있는 크기 - 부호 있는 숫자를 나타내는 데 가장 적게 사용되는 방법입니다. 이 방법에서는 숫자의 부호를 나타내기 위해 특수 비트가 고정됩니다.
나머지 비트는 숫자의 크기를 나타냅니다. 그러나 이 방법은 특히 음수에 대한 산술 연산을 수행할 때 컴퓨터에 구현될 때 심각한 문제가 있습니다.
-
1의 보수 - 이 방법은 해당 양수의 비트 표현에서 0비트를 1로 또는 그 반대로 변환하여 음수를 표현한다.
맨 왼쪽 비트는 숫자의 부호를 나타냅니다. 0은 양의 부호를 나타내고 1은 음의 부호를 나타냅니다.
그러나 이 방법은 이 방법을 사용하는 동안 +0과 -0의 두 가지 다른 표현이 있다는 단점이 있습니다.
-
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비트 정수 표현에 대한 결과를 보여줍니다.