// --------------------- // 工学値変換 13ビット // --------------------- WORD CalcTemp10(INT val) { bool neg = false; // 負数フラグ // (A)負数の補正処理 if(val < 0) { // 負数 val = -val; // 負数のときは、絶対値を求める neg = true; // 負数フラグをセット } val >>= 3; // LSB側に詰める val = val * 10 / 16; // 負数のフラグ設定処理 if(neg) { // 負数 return (WORD)val | 0x8000; // MSBを"1"にセット(負数フラグ) } else { return (WORD)val; } }