0

マスクで示される4ビット範囲でオプションが設定されていますapplicationReserved = 0x0F000000。このことから、私はいくつかの可能な解決策を作ってみた範囲内の値のビット操作

可能な値0x010000000x020000000x03000000を、...生成したいと思いますが、私はこれ以上明確な表現があるかもしれない疑いがある:

applicationReserved & -applicationReserved 
applicationReserved & -applicationReserved << 1 
... 

または

applicationReserved/15 
applicationReserved/15 * 2 
... 
+0

範囲には開始と終了が必要です。あなたは1つの縛りを持っています –

+1

私は問題を理解していない、私は解決策を理解していません。可能な値の集合が与えられているとすれば、 '(x&applicationReserved)!= 0'のような' x'が予約されているということですか?そうであれば、 "解決策"とは何なのですか?その状態をテストしますか?それらを生成する?実際に何をしているのですか – harold

+0

この特定の例では、それはちょうどそれが4ビットの範囲であると仮定していると思います。 'applicationReserved = 0x0F000000'は' 0x010000000-0x0F0000000'を表す。この具体的な実装については、[apple docs](https://developer.apple.com/reference/uikit/uicontrolevents/uicontroleventapplicationreserved?language=objc)を参照してください。 – gmcerveny

答えて

0

私は、これはあなたがコメントで説明するものに最も近いと思う:

let x = 0x0F0000000 
var offset = 0 

while offset < 63 && (x & (1 << offset)) == 0 { offset += 1 } 

for i in 0..<16 { 
    let y = i << offset 
    print(String(y, radix: 16)) 
}