如何将 unsigned long long 位分成 3 个整数,每个整数 [1-2, 3-5, 6-7] 位?

Duc*_*een -6 c++

具有unsigned long long a如何其位devide到3个整数与[1-2,3-5,6-7]中的每个位?

izo*_*ica 5

unsigned long long a;
// bits 1 and 2 assuming 0 indexed
int first = static_cast<int>((a & (3ULL<<1))>>1);
// bits 3 and 5 assuming 0 indexed
int second = static_cast<int>((a & (3ULL << 3)) >> 3);
// bits 6 and 7 assuming 0 indexed
int third = static_cast<int>((a & (3ULL << 5)) >> 5);
Run Code Online (Sandbox Code Playgroud)