我对位掩码和位操作很陌生。你能帮我理解这一点吗?我有三个整数 a、b 和 c,我用以下操作创建了一个新数字 d:
int a = 1;
int b = 2;
int c = 92;
int d = (a << 14) + (b << 11) + c;
我们如何使用 d 重构 a、b 和 c?
最佳答案
我不知道您的a
、b
和c
的范围。但是,假设 a
和 b
为 3 位,c
为 11 位,我们可以这样做:
a = ( d >> 14 ) & 7;
b = ( d >> 11 ) & 7;
c = ( d >> 0 ) & 2047;
更新:
and-mask 的值计算为:(2^NumberOfBits)-1
关于c++ - 使用位掩码重构整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196914/