例如:我有1二进制是00000001。当我移动1<<3时,我取8,它是00001000。我需要在1<<3之后加上00001111。我希望你能理解,如果有什么不清楚的地方,请询问一下。我想缩短这部分:
for(int i=1;h>0;h--,i*=2) hr+=i;
据我所知,您想要
std::uint32_t my_shift(std::uint32_t n, std::uint32_t lshift)
{
return (n << lshift) | ((1 << lshift) - 1);
// original shifted | 0b0001111 (lshift 1)
}
可以直接迭代hr:
for(int hr=1; h>0; h--, hr=2*hr+1)