簡體   English   中英

在 C++ 中移動二進制數

[英]Shifting binary number in c++

例如我想做的:我有 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM