서명성

Signedness

컴퓨팅에서 서명성은 컴퓨터 프로그램에서 숫자를 나타내는 데이터 유형의 특성입니다.숫자 변수가 양수와 음수를 모두 나타낼 수 있는 경우 서명되고 음수가 아닌 숫자(0 또는 양수)만 나타낼 수 있는 경우 서명되지 않습니다.

부호 있는 숫자는 음수를 나타낼 수 있기 때문에 가능의 약 절반이 의 값이 아닌 반면, 각각의 부호 없는 유형은 가능한 모든 값을 양의 범위에 할당할 수 있기 때문에 같은 크기의 부호 없는 숫자(비트)로만 표시할 수 있는 양의 범위를 잃게 됩니다.

예를 들어 두 개의 보완 부호 있는 16비트 정수는 -32768 ~32767의 값을 포함할 수 있으며, 부호 없는 16비트 정수는 0 ~65535의 값을 유지할 수 있습니다.부호 표현 방법에서는 가장 왼쪽의 비트(최고 유효 비트)는 값이 음수인지 여부를 나타냅니다(양수 또는 0의 경우 0, 음수의 경우 1).

프로그래밍 언어

대부분의 아키텍처에서 기계어에는 부호화되지 않은 유형의 구별이 없습니다.그럼에도 불구하고 산술 명령에서는 보통 부호 없는 산술의 반송 플래그와 서명된 산술의 오버플로 플래그와 같은 다른 CPU 플래그를 설정합니다.이러한 값은 후속 분기 명령 또는 산술 명령으로 고려할 수 있습니다.

C 프로그래밍 언어는 파생어와 함께 "문자"만 아니라 모든 정수 데이터 유형에 대해 부호화를 구현합니다.정수의 경우unsigned 수식자는 서명하지 않는 유형을 정의합니다.기본 정수 서명성은 서명되지만 서명된 수식자를 사용하여 명시적으로 설정할 수 있습니다.반면 C 표준에서는 부호 있는 문자, 부호 없는 문자 및 문자가 세 가지 다른 유형이라고 선언하지만 세 가지 모두 크기와 정렬이 동일해야 합니다.또한 char는 부호 있는 char 또는 부호 없는 char와 같은 숫자 범위를 가져야 하지만 플랫폼에 따라 선택이 달라집니다.정수 리터럴은 U 서픽스로 부호 없이 만들 수 있습니다.예를 들어 0xFFFF는 -1을 나타내지만 0xFFFFU는 32비트코드에 4,294,967,295를 나타냅니다.

컴파일러는 서명된 숫자와 서명되지 않은 숫자를 비교하거나 한 숫자를 다른 숫자에 캐스팅할 때 경고를 보내는 경우가 많습니다.이는 서명된 유형과 서명되지 않은 유형의 범위가 다르기 때문에 잠재적으로 위험한 작업입니다.

「 」를 참조해 주세요.

외부 링크

  • "Numeric Type Overview". MySQL 5.0 Reference Manual. mysql.com. 2011. Retrieved 6 January 2012.
  • "Understand integer conversion rules", CERT C Coding Standard, Computer emergency response team, retrieved December 31, 2015