3
我可以想出三種方法來做到這一點我的頭頂。我會很快概述它們。什麼是創建一個位範圍的位掩碼的最佳做法?
char mask = (1<<top)
mask = mask-1
mask = mask>>bot
mask = mask<<bot
3 shifts, 1 addition
char topMask = (1<<top)
topMask = topMask -1
char botMask = (1<<bot)
botMask = botMask - 1
char mask = topMask - botMask
2 shifts, 3 additions
char mask = (1<<(top-bot))
mask = mask - 1
mask = mask << bot
2 shifts, 2 additions
看起來好像第一個會快一點? 被認爲是最好的風格的原因? 有沒有一個很好的方式我失蹤了,還是我在做一些愚蠢的事情?謝謝!
我特別感興趣的是,如果任何人都可以指向我在linux內核完成的地方。
編輯: 有人發佈這樣的東西作爲另一種方式,並刪除它?很像第二個。但XOR而不是減法。
char mask = ((1<<top)-1)^((1<<bot)-1)
這幾乎沒有「最佳實踐」的答案。選擇哪個版本看起來最清晰,評論它的作用,然後繼續。 –