我有两个无符号整数:
这是我的做法:
a
和 b
(b
是一个无符号整数指针)。我想复制a
的第8和第9位到b
的第2和第3位(所有索引均从0开始计算)。这是我的做法:
bool secondBit = (a & (1 << 8) ) ;
bool thirdBit = (a & (1 << 9) ) ;
if (secondBit) {
*b |= (1u << 2);
}
if (thirdBit) {
*b |= (1u << 3);
提醒: b
是一个无符号整数指针。
有没有更好的方法来做这件事?
*b
中的位已经被设置,则此操作实际上不会重置该位。如果这是您的意图,那么我认为您的代码比顶部答案更清晰。 - M.M