【发布时间】:2013-02-05 15:15:54
【问题描述】:
我有两个字节包含一个 14 位左对齐 two's complement 值,我需要将其转换为有符号短值(我猜是从 -8192 到 +8191?)
最快的方法是什么?
【问题讨论】:
标签: c types bit-shift twos-complement
我有两个字节包含一个 14 位左对齐 two's complement 值,我需要将其转换为有符号短值(我猜是从 -8192 到 +8191?)
最快的方法是什么?
【问题讨论】:
标签: c types bit-shift twos-complement
除以 4。
(注意,右移会导致实现/未定义的行为。)
【讨论】:
便携式解决方案:
short convert(unsigned char hi, unsigned char lo)
{
int s = (hi << 6) | (lo >> 2);
if (s >= 8192)
s -= 16384;
return s;
}
【讨论】:
lo vs low)。