3

左詰めの 14 ビットの 2 の補数値を含む 2 バイトがあり、それを符号付きの short 値 (-8192 から +8191 の範囲でしょうか?) に変換する必要があります。

それを行うための最速の方法は何ですか?

4

2 に答える 2

4

単純に 4 で割ります。

(右シフトは実装/未定義の動作につながることに注意してください。)

于 2013-02-05T15:28:43.340 に答える
1

ポータブルソリューション:

short convert(unsigned char hi, unsigned char lo)
{
  int s = (hi << 6) | (lo >> 2);
  if (s >= 8192)
    s -= 16384;
  return s;
}
于 2013-02-05T15:44:22.757 に答える