2010-04-24 3 views
0

저는 OKI 431 마이크로 컨트롤러와 함께 작업하고 있습니다. 적절한 소프트웨어가 설치된 PC와 통신 할 수 있습니다. EEPROM은 영구 메모리로 작동하는 마이크로의 I2C 버스에 연결됩니다. PC 소프트웨어는이 EEPROM에 읽고 쓸 수 있습니다.여러 아키텍처에서 음수 표현

두 개의 숫자 B와 C가 각각 2 바이트 정수라고 가정합니다. B는 PC 소프트웨어와 마이크로 모두에 알려져 있으며 상수입니다. C는 B에 가깝기 때문에 B-C가 부호있는 8 비트 정수에 맞을 것입니다. 일부 테스트 후에 C에 대한 적절한 값은 PC에 의해 결정되며 나중에 사용하기 위해 마이크로의 EEPROM에 저장됩니다.

  • 는 마이크로
  • one byte 부호있는 정수로 BC를 저장할 수있는 마이크로 C를 나타내는 전체 two byte를 저장할 수 있고, 이후 B 및 BC에서 C를 유도 할 수

    지금 마이크로 두 가지 방법 C를 저장할 수

음수의 2의 보수 표현은 현재 하드웨어 제조업체가 일반적으로 허용한다고 생각합니다. 아직도 나는 음수가 다른 방식으로 표현 될 수 있기 때문에 개인적으로 두 개의 다른 아키텍처에 의해 액세스 될 저장 매체에 음수가 저장되는 것을 좋아하지 않습니다. 431은 또한 2의 보수를 사용합니다.

음수가 다른 방식으로 표현 될 수있는 두통을 없애고 다른 팀원이 제안한대로 one byte 해결책을 수락해야합니까? 또는 음수를 처리 할 필요가 없기 때문에 two byte 솔루션의 결정을 고수해야합니까? 어느 것을 선호 하시겠습니까?

답변

2

이것은 애플리케이션과 관련이 있으며, 누락 된 정보가 없으면 어떤 방식 으로든 다른 방식으로 영향을 미치지 않습니다.
제 제안은 단순히 하나를 선택하고 함께가는 것입니다.
팀원이 편도를 제안하고 실제로 차이가 없으므로 팀과 함께가는 것은 나쁜 해결책이 아닙니다.

2

내가 사용했던 고대 FORTRAN 응용 프로그램은 암시 적 음수 오프셋이있는 양의 정수로 특정 필드의 값을 저장하는 데 사용됩니다. 숫자를 저장하는 데 사용할 수있는 12 비트가 있었으므로 값을 저장하기 전에 1024를 더하고 검색 한 후에 값을 뺍니다. 이를 통해 0에서 2047 범위의 (외부) 메모리에 양수를 사용하여 -1024에서 1023 사이의 숫자를 저장할 수 있습니다.

매우 우아하지만 매우 간단합니다. 기본적으로 코드에서 부호 비트 처리를 수행하고 있습니다.

+0

오프셋으로 C에 대해 가능한 최소값을 사용하고, 구성된 C 값을 얻기 위해 EEPROM에서 부호없는 바이트를 추가합니다. – starblue