如何使用位运算符来隔离C中无符号整数的位?

时间:2017-09-30 22:18:47

标签: c bit-manipulation bit bits

除了这一次,这似乎对我有用。我正试图获得这个数字的前10位

unsigned char c= 17512807u<<22>>22;

我希望这是359或0101100111,但我得到103或0001100111.这是否有原因发生?

1 个答案:

答案 0 :(得分:1)

由于截断为8位unsigned char值(分配给c时),您获得的结果是正确的。

如果您需要10位宽的值,则应使用其他数据类型,例如uint16_tunsigned int

Reference to C++ integer datatypes