2010-03-04 6 views
1

부호가있는 정수와 부호없는 정수 및 컴퓨터 메모리에서의 표현의 차이점에 대해 설명 된 일부 어셈블리 자습서를 읽었습니다.부호없는 int/long 표현 방법

정수가 서명되지 않았거나 서명되어 있는지 여부를 알려주기 위해 숫자의 시작 부분에 약간의 비트가 있었음을 기억합니다.

누군가가 알고있는 경우 대답하십시오.

+0

http://en.wikipedia.org/wiki/Signed_number_representations – Tim

답변

2

Signed Number representation에 대한 위키 백과의 페이지가 모두 서명 부호없는 정수 값의 가장 일반적인 메모리 구현을 보여주고있다.

Two's complement이 가장 일반적인 표현입니다.

2

서명 숫자의 여러 가지 표현이 있습니다, 가장 일반적인 two's complement.

+0

하지만 정확히 내가 읽고 싶었던 것은 아닙니다 ... 어떻게 컴퓨터 메모리에 표시됩니까? int()가 부호가 있거나 부호가 없다는 것을 기계 (또는 컴파일러)가 어떻게 알 수 있습니까? – VaioIsBorn

+1

컴퓨터가 알지 못하는 이유는 컴파일러에게이를 처리하는 방법을 알려줘야하기 때문입니다. 메모리에서 이것은 단지 비트 수로 표현됩니다 ... –

+0

2의 보수는 많은 연산이 부호없는 데이터와 부호있는 데이터를 동등하게 (예 : 더하기) 작업 할 수 있도록하기 까다 롭습니다. –

2

MSB는 번호가 서명되었는지 여부를 결정하지 않습니다. 부호가있는 숫자는 숫자가 음수인지 여부를 나타냅니다. 부호없는 숫자는 단지 MSB입니다. 숫자가 서명 된 것으로 간주되는지 서명되지 않는 것으로 간주되는지를 결정하는 프로그램입니다.

1

그는 그입니다. 까다로운 질문입니다. 부호가 있거나 부호가없는 정수는 정확히 동일하게 나타납니다. 기억을 보면 당신은 그것들을 구별 할 수 없을 것입니다. 그것은 폰 노이만의 원리 중 하나에서 나온 것입니다. 그렇다면 차이점은 무엇입니까? 차이가 해석되는 방식에 차이가 있습니다. variable이 signed 인 경우 컴파일러는 signed int에 대해 명령을 사용합니다. 또한 번호가 서명 된 것을 알게되면 첫 번째 비트는 기호임을 나타냅니다. 두 가지 방법으로 ~i + 1 (c 구문)으로 변환됩니다.

0

computer's organization에 따라 다양한 표현이 가능합니다. 수 (양의 (일반적으로 OFF) 또는 음인지 가장 유명한 당신이 알아내는 첫 번째 (가장 중요한) 비트를 테스트 할 수 있습니다, 모두 표현에 One's complement

  • Two's complement
    • 있습니다 비트 온). 즉, 숫자를 으로 처리하면이됩니다. 이러한 번호를 부호없는 것으로 처리하도록 컴파일러에 지시하면 부호 비트가 데이터로 사용됩니다 (데이터 형식에 대해 최대 값은 두 배로 range).