アプリ版:「スタンプのみでお礼する」機能のリリースについて

LSB(1ビットあたり)1Vの単位を持つ変数「VOLT_1」と
LSB(1ビットあたり)10Vの単位を持つ変数「VOLT_10」
との合わせ込みについて

「VOLT_1」を10V側のに合わせるには「VOLT_1」を単純に10倍すれば宜しいですよね?

又「VOLT_10」を1V側に合わせ込むには逆に1/10すれば宜しいですよね?

ご回答よろしくお願いします。

A 回答 (5件)

こんにちは。

 FarEyesです。

#3の件で補足させて下さい。

変数 VOLT_10 について、
  VOLT_10 = 1 の時に 10V を意味する。
ということは、
  VOLT_10 には 10V の 10 という値が 1/10 されて格納されている。
と考えてみて下さい。

その上で、
  VOLT_10 の値を 「元に戻す」 ための手段として、
  VOLT_10 の値を 10倍 する。
と考えてみては如何でしょう?

以上です。
    • good
    • 0
この回答へのお礼

遅くなりましてすみません。

1ビット(LSB)の重みが1/10されているという考えに
全く結びつきませんでした
お手数と時間を掛けさせてしまってすみませんでした。

基礎を詳しく教えていただいて大変たすかりました
ありがとうございました

お礼日時:2009/11/22 22:19

もっとあっさりいうと, 「1 m は何 cm?」ってのと同じことですな.

    • good
    • 0

こんにちは。

 #2です。

> 「なぜ小さい単位に合わせるのに割らずに倍するのか?」
> これが全く理解できていません。
> これは、算数又は数学のお話になるのでしょうか?

そうですね。
どちらかと言えば算数or数学の分野の話になるかもしれませんね。

話を単純化して考えてみましょう。

  VOLT_10 = 1  ( = 10V )

のとき、VOLT_10 を VOLT_1 に格納するとします。
単純に、

  VOLT_1 = VOLT_10

としてしまうと、

  VOLT_1 = 1  ( = 1V )

となり、本来、「10V」の意味合いの値が、「1V」になってしまいます。

では、質問者さんの言われるように、VOLT_10 を 1/10 するとします。

  VOLT_1 = VOLT_10 / 10

すると、

  VOLT_1 = 1 / 10
        ↓
  VOLT_1 = 0  ( = 0V )  (←整数値での演算のため、結果は 0 になる)

となってしまい、今度は本来、「10V」の意味合いの値が、「0V」になって
しまいます。

では、VOLT_10 を 10倍した場合は、

  VOLT_1 = VOLT_10 * 10
        ↓
  VOLT_1 = 1 * 10
        ↓
  VOLT_1 = 10  ( = 10V )

となり、VOLT_1 での内部値も、「10V」に相当する値(=10)に正しく設定
されたことになると思います。

これで、解りますでしょうか?
    • good
    • 0

こんにちは。



確認も含めてコメントさせて戴きます。
※的外れだった場合はすみません。

1)各変数について

> LSB(1ビットあたり)1Vの単位を持つ変数「VOLT_1」と
> LSB(1ビットあたり)10Vの単位を持つ変数「VOLT_10」

上記2つの変数ですが、仮にそれぞれ、8ビット(=1バイトとします)の
変数だったと仮定して、

<変数: VOLT_1>
        [MSB]         [LSB] 
 ビット並び: 7 6 5 4 3 2 1 0   値(単位=ボルト)
         0 0 0 0 0 0 0 0 = 0V
         0 0 0 0 0 0 0 1 = 1V
         0 0 0 0 0 0 1 0 = 2V
         0 0 0 0 0 0 1 1 = 3V
         0 0 0 0 0 1 0 0 = 4V
         0 0 0 0 0 1 0 1 = 5V
               :          :
               :          :
<変数: VOLT_10>
        [MSB]         [LSB] 
 ビット並び: 7 6 5 4 3 2 1 0   値(単位=ボルト)
         0 0 0 0 0 0 0 0 = 0V
         0 0 0 0 0 0 0 1 = 10V
         0 0 0 0 0 0 1 0 = 20V
         0 0 0 0 0 0 1 1 = 30V
         0 0 0 0 0 1 0 0 = 40V
         0 0 0 0 0 1 0 1 = 50V
               :          :
               :          :
ということでしょうか?

2)単位合わせについて
  注)上記1)の定義だった場合の話になります。

> 「VOLT_1」を10V側のに合わせるには「VOLT_1」を単純に10倍すれば宜しいですよね?
> 又「VOLT_10」を1V側に合わせ込むには逆に1/10すれば宜しいですよね?

単位を合わせるのなら、(※丸めの件は後述)
  まず、
    VOLT_10 を  VOLT_1  の単位に合わせる → VOLT_10 を 10倍 する。
  そして、
    VOLT_1 と 「補正後のVOLT_10」の値で 計算を行う。
  その結果を、
  ◎単位1Vの値とする場合は、
    計算結果 を 「そのまま」使用する。
  ◎単位10Vの値とする場合は、
    計算結果 を 1/10 する。
のように双方の値を、「単位が小さい方」の値に合わせ込んでから、計算するのが
良いのではないでしょうか?

具体的な例を上げると、
※計算は全て整数値での計算とします。

 <例1>
    変数: VOLT_1 = 14 (= 14V)
    変数: VOLT_10 = 1 (= 10V)
    変数: VOLT_10X   (単位:1=10V の変数とします)
  とした場合で、

  変数 VOLT_10X に VOLT_1 と VOLT_10 の合計値を格納する場合で、
  まず、小数点以下を「切り捨て」する場合、
    VOLT_10X = ( VOLT_1 + ( VOLT_10 * 10 ) ) / 10;
  とします。

  結果は、
    VOLT_10X = ( 14 + ( 1 * 10 ) ) / 10;
    VOLT_10X = ( 14 + 10 ) / 10;
    VOLT_10X = 24 / 10;
    VOLT_10X = 2;    /* = 20V */
  となります。

  次に、小数点以下を考慮する場合で、
  まず、小数点以下1桁を「四捨五入」する場合、
    VOLT_10X = ( VOLT_1 + ( VOLT_10 * 10 ) + 5 ) / 10;
  とします。

  結果は、
    VOLT_10X = ( 14 + ( 1 * 10 ) + 5 ) / 10;
    VOLT_10X = ( 14 + 10 + 5 ) / 10;
    VOLT_10X = 29 / 10;
    VOLT_10X = 2;    /* = 20V */
  となります。

  あるいは、小数点以下1桁を「切り上げ」する場合、
    VOLT_10X = ( VOLT_1 + ( VOLT_10 * 10 ) + 9 ) / 10;
  とします。

  結果は、
    VOLT_10X = ( 14 + ( 1 * 10 ) + 9 ) / 10;
    VOLT_10X = ( 14 + 10 + 9 ) / 10;
    VOLT_10X = 33 / 10;
    VOLT_10X = 3;    /* = 30V */
  となります。

 <例2>
    変数: VOLT_1 = 14 (= 14V)
    変数: VOLT_10 = 1 (= 10V)
    変数: VOLT_1X    (単位:1=1V の変数とします)
  とした場合で、

  変数 VOLT_1X に VOLT_1 と VOLT_10 の合計値を格納する場合、
    VOLT_1X = VOLT_1 + ( VOLT_10 * 10 );
  とします。

  結果は、
    VOLT_1X = 14 + ( 1 * 10 );
    VOLT_1X = 14 + 10;
    VOLT_1X = 24;    /* = 24V */
  となります。

のような計算式になるのではないでしょうか?

以上です。
    • good
    • 0
この回答へのお礼

とても丁寧な解説ありがとうございます。

まず1)の変数のご回答については説明不足ですみません。
FarEyesさんの見解とおり、VOLT_1が1だったら1Vで、
VOLT_10が1だったら10Vという仮定です。

本題の単位合わせですが、ありがたい解説をして頂き大変恐縮ですが
私が知りたかった事は合わせ込みの基礎の基礎(ホントに低レベルな事)と思われる
VOLT_10 を VOLT_1 の単位に合わせる場合は「VOLT_10を10倍する。」
という部分についてです。

「なぜ小さい単位に合わせるのに割らずに倍するのか?」
これが全く理解できていません。
これは、算数又は数学のお話になるのでしょうか?

これについて、詳しい情報があるサイトもしくわ、解説を頂きたく
お手数掛けますが、再度ご回答のほどよろしくお願いします。

お礼日時:2009/11/18 22:14

丸め誤差はどうするの?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!