有没有比我下面得到的更漂亮的方法来将有符号的 13 位值转换为有符号的 16 位值?这两个值都位于 16 位字中,13 位值被移动了 3 位。
S = Sign, O = Value bit, X = Unused
a is the signed 13-bit | SOOO OOOO OOOO OXXX
b is the signed 16-bit | SOOO OOOO OOOO OOOO
当前实施
b = a & 0x7FF8; // Remove sign XOOO OOOO OOOO OXXX
b = b >> 3; // Shift value 3 bit XXXO OOOO OOOO OOOO
b = b | (a & 0x8000); // Add sign SXXO OOOO OOOO OOOO