기술나눔

int 형 변수로 표현되는 범위의 계산 원리

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 이해하다

여기에 이미지 설명을 삽입하세요.
일반적으로 int형 변수는 4바이트를 차지하고 1바이트는 8비트로 구성되며 각 비트는 0과 1의 두 가지 상태를 갖습니다. 따라서 int형 변수는 총 2^32개의 상태를 나타낼 수 있습니다. ^8 데이터 값).

2. 왜 일반적으로 int 유형 정수의 값 범위는 -2147483648 ~ 2147483647입니다.

07:36에 시작
더 깊은 이해
        묻다: 위의 두 영상을 보면 int형으로 표현할 수 있는 양의 정수의 범위는 1 ~ 2^31 - 1임을 알 수 있다. 이 논리를 음의 정수로 비유하면 표현할 수 있는 정수의 범위는 int 유형은 -2^31 + 1 ~ 2^31 -1이 아니어야 합니까? 2^31 값을 얻을 수 없는데 왜 -2^31을 얻을 수 있습니까?
        답변:컴퓨터 과학에서 가장 일반적으로 사용되는 부호 있는 정수 표현은 다음과 같습니다.2의 보수 표현 . 이 방법은 양수와 음수를 표현하는 문제를 해결할 뿐만 아니라 이진수 덧셈과 뺄셈 연산도 단순화합니다. 이 표현을 자세히 살펴보겠습니다.
        1. 양수 : 양수의 이진 표현은 부호 없는 숫자와 동일합니다. 예를 들어 3의 3자리 이진수 표현은 011입니다.
        2. 음수 : 음수의 표현은 양수의 보수를 통해 이루어집니다. 음수의 2의 보수는 숫자의 절대값의 이진 표현을 반전하고 1을 더하여 계산됩니다. 예를 들어:
① 부정: 먼저 3, 011의 이진 표현을 100으로 반전합니다.
② 1 더하기: 100에 1을 더해 101이 되므로 -3의 2의 보수 표현은 101이 됩니다.
         32비트 정수 변수의 경우 가장 높은 비트(부호 비트라고도 함)는 부호를 나타내고 0은 양수를 나타내고 1은 음수를 나타냅니다. 나머지 31비트는 숫자 값을 나타내는 데 사용됩니다.다음으로, 방금 제기한 질문으로 돌아가겠습니다.
        1. 양수 범위(0 포함) : 부호비트는 0이고, 나머지 31비트는 000…000(310s)부터 011…111(311s)까지의 값을 나타낼 수 있다. 해당 소수점 범위는 0부터 2^31 - 1까지입니다.
        2. 음수 범위 : 부호 비트는 1이고, 나머지 31비트는 100...000(310s)부터 111...111(311s)까지의 값을 나타낼 수 있다. 그 중 2의 보수인 100...000(0 31개)은 -2^31을 나타내며, 이에 해당하는 소수값은 -2^31입니다. 111...111(31일)의 2의 보수는 -1을 나타내고 해당 소수점 값은 -1입니다.
         양수 범위: 1 ~ 2^31 - 1, 음수 범위: -1 ~ -2^31, 총 숫자는 여전히 2^32개의 다른 상태입니다. 따라서 일반적으로 int형 정수의 값 범위는 -2147483648 ~ 2147483647 (즉, -2^31 ~ 2^31 - 1)입니다.

3. int 유형은 몇 바이트를 차지합니까?

64비트 int는 몇 바이트를 차지합니까? 정수 유형 int, long 및 long long의 차이점은 무엇입니까?
64비트 int는 몇 바이트를 차지하나요? [인터뷰] int는 몇 바이트를 차지하나요?
32비트와 64비트 머신의 차이점과 기본 데이터 유형이 차지하는 바이트 수
C 언어 정수형(값 범위 및 길이 포함)
int 유형은 몇 바이트를 차지합니까?
다양한 플랫폼에서 int 유형과 포인터 유형의 데이터 크기
자바 sizeof() 문제
Python의 Int 유형 변수는 모든 크기의 정수를 저장할 수 있습니다.

요약하다:

  1. C 및 C++의 데이터 유형 크기는 컴파일 표준, 컴파일러, 운영 체제 비트 수 등에 의해 영향을 받습니다.
  2. Java 및 Python의 데이터 유형 크기는 언어 사양이나 인터프리터 구현에 따라 결정되며 컴파일러 및 운영 체제 비트와 같은 요소의 영향을 받지 않습니다.
  3. 이러한 디자인 차이의 주된 이유는 C와 C++는 일반적으로 하드웨어와 직접 상호 작용해야 하는 시스템 프로그래밍 언어이므로 데이터 유형의 크기는 기본 환경에 따라 달라지지만 Java와 Python은 높은 수준입니다. 더 높은 수준의 추상화를 갖춘 프로그래밍 언어입니다. 디자인 목표는 플랫폼 간 일관성입니다.

4. 추천

다시 추천
3부: 문제의 근원