0

OKI431マイクロコントローラーを使用しています。適切なソフトウェアがインストールされたPCと通信できます。永久メモリとして機能するマイクロのI2CバスにEEPROMが接続されています。PCソフトウェアは、このEEPROMの読み取りと書き込みを行うことができます。

BとCの2つの数値を考えてみましょう。それぞれ、2バイトの整数です。BはPCソフトウェアとマイクロの両方に知られており、定数です。Cは、BCが符号付き8ビット整数に収まるようにBに非常に近い数値になります。いくつかのテストの後、Cの適切な値はPCによって決定され、後で使用するためにマイクロのEEPROMに保存されます。

これで、マイクロは2つの方法でCを保存できます。

  • マイクロはtwo byteCを表す全体を保存できます
  • マイクロはBCをone byte符号付き整数として格納でき、後でBとBCからCを導出できます。

負の数の2の補数表現は、現在、ハードウェアメーカーによって広く受け入れられていると思います。それでも私は、負の数はさまざまな方法で表現できるため、2つの異なるアーキテクチャによってアクセスされる記憶媒体に負の数を格納することは個人的には好きではありません。参考までに、431は2の補数も使用します。

負の数はさまざまな方法で表すことができるという頭痛の種を取り除きone byte、他のチームメンバーが提案した解決策を受け入れる必要がありますか?two byteまたは、負の数を処理する必要がないため、ソリューションの決定に固執する必要がありますか?どちらが好きですか、そしてその理由は何ですか?

4

2 に答える 2

2

私が以前働いていた古代のFORTRANアプリケーションは、特定のフィールドの値を、暗黙の負のオフセットを持つ正の整数として格納するために使用されていました。数値を格納するために使用できるビットは12ビットであったため、格納する前に値に1024を加算し、取得後に減算します。これにより、0から2047の範囲で、(外部)メモリに正の数を使用して-1024から1023の範囲の数値を格納できるようになります。

エレガントとは言えませんが、とてもシンプルです。基本的に、コードで符号ビット処理を行っています。

于 2010-04-24T16:27:45.390 に答える
2

これはあなたのアプリケーションに非常に特有であり、私が何かを見逃していない限り、何らかの方法でそれを行うことへの外部の影響はないようです。
私の提案は、単に1つを選び、それを使用することです。
あなたのチームメイトは一方向を提案していて、実際には違いがないので、チームと一緒に行くことは悪い解決策ではありません。

于 2010-04-24T16:32:46.977 に答える