我有两个无符号整数:a和b (b是一个无符号int指针)。我想把第8位和第9位a复制到第2位和第3位b(所有索引都是0)。
我就是这样做的:
bool secondBit = (a & (1 << 8) ) ;
bool thirdBit = (a & (1 << 9) ) ;
if (secondBit) {
*b |= (1u << 2);
}
if (thirdBit) {
*b |= (1u << 3);提醒:b是一个无符号的int指针。
有更好的方法吗?
发布于 2014-03-21 17:39:39
取决于您对“更好”的定义:)
但是,std::bitset类在C++中是存在的。也许它通过提供一个不太容易出错的界面来满足您的需要。
发布于 2014-03-21 17:37:47
在给定的代码中,它不复制比特--它只是对它们进行了操作。它应该做什么
*b &= ~0xC0;第一?然后
*b |= ((a >> 6) & 0xC0);https://stackoverflow.com/questions/22565665
复制相似问题