[英]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.