问题描述
亲爱的所有 C 程序员:
X = 1 << N; (left shift)
如何从 X 中恢复 N?
谢谢
解决方法
N
在这种情况下是您在 1
处移位的位位置。假设这里的 X
只设置了一位。然后要找出该位位置对应的数字,您必须遍历数据并使用按位 AND 进行掩码:
for(size_t i=0; i<sizeof(X)*8; i++)
if(X & (1<<i))
printf("%d",i);
如果性能很重要,那么您应该制作一个包含所有可能结果的查找表。