我需要執行此函數以從無符號的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)))
}
Is there與崩潰的消息? –
是否有一個名爲「id」的參數丟失? – swdev
執行中斷,原因:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)。 – lucamegh