簡體   English   中英

在n LSBits之后清除m位的掩碼

[英]Mask for clearing m bits after n LSBits

我在接受采訪時被問到這個問題,在16位整數的n位之后清除m位。

可以說這個數字是10010010010100101.從LSBit中清除5位后的三位。

之前:10011001 110 11001之后:10011001 000 11001

我對掩碼的解決方案是(~0 << (m+n))+((1<<n)-1)

有沒有比這更好的解決方案?

我不確定“更好”,但我似乎總是以同樣的方式構建面具。

((1u<<m)-1)<<n

對於m = 3 n = 5,這給出了

000011100000

然后使用此掩碼從另一個值中清除這些位,

x & ~(((1u<<m)-1)<<n)

暫無
暫無

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

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