부호가있는 정수와 부호없는 정수 및 컴퓨터 메모리에서의 표현의 차이점에 대해 설명 된 일부 어셈블리 자습서를 읽었습니다.부호없는 int/long 표현 방법
정수가 서명되지 않았거나 서명되어 있는지 여부를 알려주기 위해 숫자의 시작 부분에 약간의 비트가 있었음을 기억합니다.
누군가가 알고있는 경우 대답하십시오.
부호가있는 정수와 부호없는 정수 및 컴퓨터 메모리에서의 표현의 차이점에 대해 설명 된 일부 어셈블리 자습서를 읽었습니다.부호없는 int/long 표현 방법
정수가 서명되지 않았거나 서명되어 있는지 여부를 알려주기 위해 숫자의 시작 부분에 약간의 비트가 있었음을 기억합니다.
누군가가 알고있는 경우 대답하십시오.
는 Signed Number representation에 대한 위키 백과의 페이지가 모두 서명 부호없는 정수 값의 가장 일반적인 메모리 구현을 보여주고있다.
Two's complement이 가장 일반적인 표현입니다.
서명 숫자의 여러 가지 표현이 있습니다, 가장 일반적인 two's complement.
하지만 정확히 내가 읽고 싶었던 것은 아닙니다 ... 어떻게 컴퓨터 메모리에 표시됩니까? int()가 부호가 있거나 부호가 없다는 것을 기계 (또는 컴파일러)가 어떻게 알 수 있습니까? – VaioIsBorn
컴퓨터가 알지 못하는 이유는 컴파일러에게이를 처리하는 방법을 알려줘야하기 때문입니다. 메모리에서 이것은 단지 비트 수로 표현됩니다 ... –
2의 보수는 많은 연산이 부호없는 데이터와 부호있는 데이터를 동등하게 (예 : 더하기) 작업 할 수 있도록하기 까다 롭습니다. –
MSB는 번호가 서명되었는지 여부를 결정하지 않습니다. 부호가있는 숫자는 숫자가 음수인지 여부를 나타냅니다. 부호없는 숫자는 단지 MSB입니다. 숫자가 서명 된 것으로 간주되는지 서명되지 않는 것으로 간주되는지를 결정하는 프로그램입니다.
그는 그입니다. 까다로운 질문입니다. 부호가 있거나 부호가없는 정수는 정확히 동일하게 나타납니다. 기억을 보면 당신은 그것들을 구별 할 수 없을 것입니다. 그것은 폰 노이만의 원리 중 하나에서 나온 것입니다. 그렇다면 차이점은 무엇입니까? 차이가 해석되는 방식에 차이가 있습니다. variable이 signed 인 경우 컴파일러는 signed int에 대해 명령을 사용합니다. 또한 번호가 서명 된 것을 알게되면 첫 번째 비트는 기호임을 나타냅니다. 두 가지 방법으로 ~i + 1
(c 구문)으로 변환됩니다.
computer's organization에 따라 다양한 표현이 가능합니다. 수 (양의 (일반적으로 OFF) 또는 음인지 가장 유명한 당신이 알아내는 첫 번째 (가장 중요한) 비트를 테스트 할 수 있습니다, 모두 표현에 One's complement
http://en.wikipedia.org/wiki/Signed_number_representations – Tim