如何在 C 中获取 16 位无符号短整型的 MSB 和 LSB?

How do I get the MSB and LSB of a 16 bit unsigned short in C?

我正在尝试 return 从 16 -bit unsigned short,我一直在研究如何实现这一点。例如,如果我有一个 unsigned short 0x651A,那么位表示将是:

//                MSB                               LSB
//                  +-----------+-------------------+
//                  |0 1 1 0 0 1|0 1 0 0 0 1 1 0 1 0|
//                  +-----------+-------------------+
//                  |           |                   |
//      bit offset: 16          10                  0

因此,如果我要获得 6 个最高有效位,则 returned short 将是 0b0000000000011001。我是 C 的新手,我仍在尝试了解位管理和位移。任何有助于我更好地理解 C 的建议或反馈都非常感谢。

要获得最低有效位,您可以使用位掩码。在这种情况下,您将 按位和 应用于手头的数字,掩码为 10 个 1。需要的数可以通过bitshift 1,然后减1得到。即本例中的(1 << 10)-1。所以任何 x 的结果都是 x & ((1 << 10)-1).

获取最高有效位更容易。您只需移开较低的位,例如 x >> 10