【发布时间】:2017-09-30 22:18:46
【问题描述】:
这似乎对我很有效,除了这一次。我正在尝试获取此数字的前 10 位
unsigned char c= 17512807u<<22>>22;
我预计这是 359 或 0101100111,但我得到的是 103 或 0001100111。发生这种情况是否有原因?
【问题讨论】:
-
无符号字符是 8 位,因此只能包含 0 到 255 之间的值。您想要的 359 值不能放入无符号字符中。
-
0101100111是 10 位。unsigned char是 8(可能)。 -
假设整数在您的机器中是 32 位,这应该给您低位 10 位,而不是高位(“第一”)10 位。当存储在
c中时,结果将被截断为 8 位(假设为 8 位字符)。 -
请注意,将
u放在17512807u中也不错,但不是必需的。
标签: c bit-manipulation bit bits