부호 있는 문자와 부호 없는 문자의 차이
그래서 나는 그 차이점을 알고 있습니다.signed int
그리고.unsigned int
숫자가 양수인지 음수인지를 나타내기 위해 비트가 사용된다는 것이다, 그러나 이것은 어떻게 양수인지char
어떻게 캐릭터가 긍정적일 수 있고 부정적일 수 있나요?
C 언어에는 전용 문자 유형이 없습니다. char
(그 점에 있어서) 와 같은 정수형입니다.int
,short
및 기타 정수형. char
가장 작은 정수형일 뿐입니다.따라서 다른 정수형과 마찬가지로 부호화 또는 부호화되지 않을 수 있습니다.
(이름에서 알 수 있듯이)은 사실이다char
는 주로 문자를 나타내기 위해 사용됩니다.그러나 C의 문자는 정수 "코드"로 표현되기 때문에 정수형이 이상할 것은 없습니다.char
그 목적을 위해 사용됩니다.
의 유일한 일반적인 차이점은char
그 외의 정수 타입은, 이 플레인입니다.char
와 동의어가 아니다.signed char
다른 정수를 사용하면signed
modifier는 옵션 또는 옵션입니다.
저는 위의 내용에 약간 동의하지 않습니다.그unsigned char
단순한 의미는 다음과 같습니다.산술 연산을 수행할 때는 +/- 부호의 비트 플래그 대신 최상위 비트를 사용하십시오.
이 기능을 사용하면 의미가 있습니다.char
예를 들어 다음과 같은 수치입니다.
typedef char BYTE1;
typedef unsigned char BYTE2;
BYTE1 a;
BYTE2 b;
변수의 경우a
사용 가능한 비트는 7비트뿐이며 범위는 (-124 ~127) = (+/-)2^7 - 1 입니다.변수의 경우b
모든 8비트를 사용할 수 있으며 범위는 0 ~255(2^8 - 1)입니다.
사용하시는 경우char
프로그램으로부터 코멘트가 삭제되는 것과 같이, 「지정 해제」는 컴파일러에 의해서 완전하게 무시됩니다.
(일반)의 3가지 문자 타입이 있습니다.char
,signed char
그리고.unsigned char
. any chars는 보통 8비트 정수* 입니다.그런 의미에서 a는signed
그리고.unsigned char
유용한 의미(대우에 상당하는 의미)를 가지다uint8_t
그리고.int8_t
텍스트의 의미로 문자로 사용할 경우,char
(일반 문자라고도 합니다).이거는 보통signed char
어느 쪽이든 컴파일러에 의해 구현될 수 있습니다.
* 엄밀히 말하면, 글자 크기는 다음과 같습니다.sizeof(char)
는 1이지만 보통 8비트 정수입니다.
표현은 같고 의미는 다릅니다.예를 들어 0xFF는 둘 다 "FF"로 표시됩니다."char"로 처리되면 음수 -1이지만 부호 없음으로 255입니다.비트 시프트는 부호 비트가 시프트되지 않기 때문에 큰 차이가 있습니다.예를 들어 255비트를 오른쪽으로 1비트를 시프트하면 127이 되고 "-1"을 오른쪽으로 시프트해도 효과가 없습니다.
A signed char
는 부호 있는 값으로, 일반적으로는 a보다 작으며, 이 값은 a보다 크지 않음을 보증합니다.short
. ANunsigned char
는 부호 없는 값이며, 일반적으로는 a보다 작으며, 이 값보다 크지는 않음을 보증합니다.short
A형char
없이signed
또는unsigned
한정자는 서명된 경우와 서명되지 않은 경우 중 하나로 동작할 수 있습니다.char
이것은 보통 구현 정의이지만, 그렇지 않은 경우가 몇 가지 있습니다.
- 대상 플랫폼의 문자 집합에서 표준 C에서 필요한 문자 중 하나가 최대 부호 문자보다 높은 코드에 매핑될 경우 "char"는 서명되지 않아야 합니다.
- char와 short의 사이즈가 같으면 char에 서명해야 합니다.
"C"의 두 가지 사투리가 있는 이유 중 일부는char
서명되어 있고 서명되어 있지 않은 것)은 다음과 같은 몇 가지 구현이 있다는 것입니다.char
서명되지 않은 상태여야 하며, 서명해야 하는 다른 위치여야 합니다.
예를 들어 8비트 문자가 있는 경우 7비트를 매그니튜드에, 1비트를 기호에 사용할 수 있습니다.따라서 부호 없는 문자의 범위는 0 ~255이고 부호 있는 문자의 범위는 -128 ~127입니다(예를 들어).
그 이유는char
는 모든 효과를 8비트 수치로 저장합니다.부정적이거나 긍정적인 것에 대해 말하는 것char
ASCII 코드(서명*만 가능)라고 생각하면 의미가 없지만, 그것을 사용하면 의미가 있습니다.char
0 ~ 255 또는 -128 범위의 숫자를 저장합니다.127은 2차원 표현에 따른 것입니다.
*: 서명 없이 사용할 수도 있습니다.실제로 구현에 따라 다르다고 생각합니다.이 경우 사용하는 인코딩에 의해 제공되는 확장 ASCII 문자셋에 액세스할 수 있습니다.
같은 방법으로.int
긍정적일 수도 있고 부정적일 수도 있습니다.차이가 없다.실제로 많은 플랫폼에서 부적격char
서명되어 있습니다.
언급URL : https://stackoverflow.com/questions/4337217/difference-between-signed-unsigned-char
'source' 카테고리의 다른 글
Java는 여러 줄 문자열을 지원합니까? (0) | 2022.08.18 |
---|---|
공유 호스팅에 larabel + vuej 도입 (0) | 2022.08.18 |
경고: 문자열 리터럴과 비교하면 지정되지 않은 동작이 발생합니다. (0) | 2022.08.18 |
Java에서의 Runnable 인터페이스와 Callable 인터페이스의 차이점 (0) | 2022.08.18 |
Swift 프로토콜과 Java 인터페이스 비교 (0) | 2022.08.18 |