Как я могу сместить столбец в области 8x8?Например, у меня есть одно 64-битное целое число без знака следующим образом:
#include <boost/cstdint.hpp>
int main()
{
/** In binary:
*
* 10000000
* 10000000
* 10000000
* 10000000
* 00000010
* 00000010
* 00000010
* 00000010
*/
boost::uint64_t b = 0x8080808002020202;
}
Теперь я хочу сместить первую вертикальную строку, скажем, четыре раза, после чего она становится такой:
/** In binary:
*
* 00000000
* 00000000
* 00000000
* 00000000
* 10000010
* 10000010
* 10000010
* 10000010
*/
b == 0x82828282;
Можно ли сделать это относительно быстро, используя только побитовые операторы, или что?