우리가 알고 있듯이 char의 범위는 -128
에서 127
입니다.숯의 범위에 관한 혼동
: 2의 -128
의 칭찬과 128
의 이진은
10000000
문자의 범위가 127
에 -128
하지만 128
을하지 -127
입니다 왜 인 동일합니다.
int
의 경우와 같이 128
과 -128
은 모두 다릅니다.
우리가 알고 있듯이 char의 범위는 -128
에서 127
입니다.숯의 범위에 관한 혼동
: 2의 -128
의 칭찬과 128
의 이진은
10000000
문자의 범위가 127
에 -128
하지만 128
을하지 -127
입니다 왜 인 동일합니다.
int
의 경우와 같이 128
과 -128
은 모두 다릅니다.
에서 동일한 문제가 발생한다. 그래서 가장 큰 양수
01111111 = 127
이며, 가장 작은 음수 같은 일이 int
에 대한 발생
10000000 = -128
이지만, 그 범위는 훨씬 더 크다. 가장 큰 긍정적 인 INT는
01111111 11111111 11111111 11111111 = 2147483647
이며, 가장 작은 부정적인 INT는 당신이 볼 수 있듯이, 두 경우 모두, 가장 작은 음의 가장 큰 양의 1보다 더 많은입니다
10000000 00000000 00000000 00000000 = -2147483648
입니다.
궁금한 점이 있으십니까? 부호 비트 이외의 비트 수가 같은 경우 왜 양수가 음수보다 더 많습니까? 왜냐하면 당신은 0
으로 계산되지 않기 때문입니다. 상위 비트에는 0이 있으므로이 표기법에서는 양수로 간주됩니다. 이것을 포함 시키면, 128 개의 음수 문자와 128 개의 음수가 아닌 문자가 있으며, 모두 동일하게 균형을 이룹니다. 노
문자는 8 비트입니다. 따라서 -128과 128의 비트 패턴은 처리 할 8 비트가있을 때 동일합니다. (부호 비트 무시)
이제 int. MSB가 -128이 아니라 플랫폼에 따라 더 큰 수이기 때문에 더 많은 비트가 있습니다.
그것은 높은 차수 비트가 1 일 때마다 숫자가 음수 인 "높은"
수의 보수 표시법봐 128
10000000
입니다 그러나 기본적으로 문자는 부호 비트로서 첫 번째 비트 컴파일러 취급을 체결하고 처리합니다. 부정적인 및 (MSB가 1이기 때문에) 그 2S가
2s complement is
01111111
+ 1
10000000
그래서 보완 계산 - 여기서
010000000
MSB를 해석하는 9 개 비트를 고려할 128 +128 컴파일러를 저장하기 저장되어있는 양수로 0 일 때.그러나 크기가 9 비트 인 이유는 char가 +127까지만 수용 할 수있는 이유를 보여줍니다. 그리고 우리가 +128을 저장하려고한다면 위에 설명 된대로 -128이 저장됩니다.
char의 범위는 항상 -128에서 127이 아닙니다. C 표준에서 8 비트 또는 그 이상의 비트가 있다고 말하는 부분을 할인합니다. 부호가 있거나 부호가 없을 수 있습니다. 아마도 당신은 int8_t를 의미했을까요? –