【发布时间】:2014-03-21 17:32:40
【问题描述】:
我有两个无符号整数: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 是一个无符号整数指针。
有没有更好的方法?
【问题讨论】:
-
对于这样的问题,字节序是否重要?
-
a 不是指针,只是一个 int
-
请注意,如果它已经在
*b中设置,这实际上并不会重置该位。如果这是您的意图,那么我认为您的代码比最佳答案更清晰。
标签: c++ c bit-manipulation