서명 된 것과 서명되지 않은 것 사이의 차이

Anonim

부호없는 부호와 부호없는 부호가 있습니다.

숫자 체계는 음의 무한대에서 양의 무한대까지 확장되어 가운데가 0입니다. 그러나 프로그래밍에는 기본적으로 두 가지 유형이 있습니다. 서명되고 서명되지 않은. 부호있는 숫자와 부호없는 숫자의 주요 차이점은 음수를 사용할 수 있다는 것입니다. 부호없는 숫자는 0 이상의 값만 가질 수 있습니다. 대조적으로, 부호가있는 숫자는 양수를 포함하는 범위에서 더 자연스러운 숫자입니다.

매우 제한된 자원으로 숫자 값을 나타낼 필요가 있기 때문에 부호있는 숫자와 부호없는 숫자의 생성이 필요했습니다. 예를 들어, 8 비트를 사용하면 총 256 개의 조합 만 가질 수 있습니다. 부호없는 숫자는 0에서 255 사이의 모든 값을 의미합니다. 반대로 서명 된 숫자를 사용하면 서명을 나타내는 데 약간의 손실이 있음을 의미합니다. 7 비트를 사용하면 최대 128 개의 조합이 가능하므로 8 비트 부호있는 숫자 범위는 -128에서 127 사이입니다. 따라서 컴퓨팅 초창기처럼 제한된 리소스를 사용하는 경우 서명되지 않은 숫자를 사용하는 것이 좋습니다.

프로그래밍에서 부호있는 번호와 부호없는 번호를 사용할 때 둘 중 하나만 사용하면 문제가 발생할 수 있으므로 둘 중 하나만 사용하면 더 안전합니다. 첫 번째는 서명되지 않은 번호와 서명되지 않은 번호를 비교하는 경우입니다. 이것은 일반적으로 경고를 발생 시키지만, 컴파일러는 경고를 컴파일 할 수 있습니다. 두 번째 및 더 심각한 문제는 부호없는 번호의 내용을 부호있는 번호에 할당 할 때입니다. 부호없는 숫자의 값이 부호있는 숫자의 최대 값보다 큰 경우 오류가 발생합니다.

기술이 발전함에 따라 자원이 풍부 해짐에 따라 부호없는 숫자의 사용이 점점 줄어들고 있습니다. 이를 설명하기 위해 서명되지 않은 경우 32 비트 길이의 부호있는 최대 값은 2 백만 또는 4 백만입니다. 64 비트로 이동하면 그 차이는 90 ~ 180 십억입니다. 공통 프로그램에서 거의 사용되지 않는 값.

요약:

1. 부호없는 숫자에는 0과 양수가 포함되며 부호가있는 숫자에는 음수가 포함됩니다. 2. 부호있는 숫자는 부호없는 숫자의 최대 값의 절반을가집니다. 3. 부호있는 숫자와 부호없는 숫자를 혼합하면 문제가 발생할 수 있습니다. 4. 부호가 있거나 부호가없는 숫자를 사용하면 현대 응용 프로그램에서 거의 영향을 미치지 않습니다.