2012-06-27 2 views
1

부호가 붙지 않는 해석에 관하여 무언가를 알고 싶었다. 맞습니다. 숫자가 부호없는 정수인 경우 이진수를 10 진수로 변환하여 계산 한 값이 정상입니다. 그러나 부호있는 정수의 경우 부호 비트 (msb)가 먼저 표시되고 이진 값이 계산됩니다. 2의 보수를 사용; 계산 된 값은 기호가 표시된 실제 값입니다.부호가있는 부호없는 해석

내가 맞았나요?

+0

내가 서명 한 케이스는 서명 된 음수에만 적용됩니다. – user1466594

+0

"선택적 접두사가있는 십진수"로 변환하는 경우, 그렇습니다. 그런 식으로 작동합니다. 부호는 개별적으로 쳐다 보며 절대 값 (이 문맥에서는 부호가 없기 때문에 int.minvalue에 존재 * 함)은 10 진수로 변환됩니다. – harold

+0

덕분에 @harold :) – user1466594

답변

1

네, 맞습니다. 부호있는 정수의 2의 보수로 변환하면 십진수 숫자로 변환됩니다. 이것은 사용자가 수행하는 방법입니다. 2의 보수은 인텔 프로세서가 부호있는 정수로 저장하고 계산하는 방법입니다.

참고 : 그러나이 답변은 이 아니며 Intel 머신이 부호있는 정수를 나타내는 방법에 대해서는이 아닙니다. 그것은 일반적입니다.

10 진수로 변환하는 데 사용하는 기술은 실제로 하드웨어에서 사용되는 표현에 따라 다릅니다.

하드웨어 디자이너로 서명 번호를 저장하도록 선택할 수 있습니다 :

  1. 로그인 진도는
  2. 1의 보수 (8 (1 비트 기호를 지정하고, 나머지는 크기, 아니 보완을 지정) 비트 11111111
  3. ... (다른 방법도있다) 인텔 같은 범용 하드웨어 (인기 -000000000+0)
  4. 2의 보수를 나타냅니다.에서 더 읽기)

우리 인간은 우리가 선호하는 10 진수 형식으로 읽을 때 해당 '변환'을 사용해야합니다.

대부분 승산을 수행하는 하드웨어를 설계하는 경우 부호있는 정수를 부호 크기 형식으로 저장하는 것이 좋습니다. 표지판과 크기를 별도로 곱하면됩니다. 반면에 2의 보수는 a little unwieldy to multiply, but not much입니다.

물론 2의 보수는 대부분의 하드웨어 (오늘날의 거의 모든 범용 CPU)가 부호있는 숫자를 저장하는 방식입니다. 이것은 추가 케이크의 조각을합니다.

+0

고마워요 @ArjunShankar – user1466594

+1

당신은 2의 보수 곱셈을 절름발이로 할 필요가 없습니다. 하반부는 그냥 정규 곱셈이고 상반부에 몇 가지 트릭이 있습니다. 트릭은 정확히 얼마나 자주 수업 외부에서 필요로하는지 ..). 어쨌든, 곱셈을 위해 최적화 된 정수 (예 : RNS)를 저장하는 부호 크기보다 더 좋은 방법이 있습니다. – harold

+1

@harold - 오른쪽. 제 의도는 이용 가능한 다른 표현들이 있다는 것을 유지하면서 간단한 설명을하는 것이 었습니다. 2의 보수를 멋지게 곱하는 한 가지 방법은 '수정 된 Baugh-Wooley 곱셈기'입니다. 나는 최근에 LEON3 단일 사이클 승수 대신에 드롭으로 그 중 하나를 만들었습니다 :) – ArjunShankar

0

설명한 것은 부호가있는 2 진 정수를 사람이 읽을 수있는 10 진수 문자열로 변환하는 가장 일반적인 방법입니다.

그러나 이것이 유일한 방법은 아닙니다. 2의 보수 3 비트 값 111을 먼저 "7"로 변환 한 다음 "8"을 빼고 "-1"에 도달 할 수 있습니다.

+0

Thanks @alex :) – user1466594

+3

upvote하고 유용한 답변을 수락 기억하십시오. –

관련 문제