符号なし64ビット整数からlsbを取得するにはこの関数を実行する必要がありますが、操作は失敗します。私はビットごとの操作があまりよくありません。誰かが私に手を差し伸べるだろうかSwiftのUInt64ビット演算でクラッシュする
func lsb(id: UInt64) -> UInt64 {
return UInt64(Int64(id) & -Int64(id))
}
ありがとうございます。
符号なし64ビット整数からlsbを取得するにはこの関数を実行する必要がありますが、操作は失敗します。私はビットごとの操作があまりよくありません。誰かが私に手を差し伸べるだろうかSwiftのUInt64ビット演算でクラッシュする
func lsb(id: UInt64) -> UInt64 {
return UInt64(Int64(id) & -Int64(id))
}
ありがとうございます。
あなたが操作の3種類のオーバーフローを避けるために必要があります:あなた、すべての変更オーバーフローフリーのための操作上の
コードは次のようになります。
func lsb(id: UInt64) -> UInt64 {
return UInt64(bitPattern: Int64(bitPattern: id) & (0 &- Int64(bitPattern: id)))
}
クラッシュのメッセージ? –
"id"というパラメータがありませんか? – swdev
実行が中断された、理由:EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)。 – lucamegh