gpt4 book ai didi

swift - 使用按位运算快速清除第 i 位

转载 作者:行者123 更新时间:2023-11-28 14:07:20 24 4
gpt4 key购买 nike

我想清除位整数表示中的第 i 个元素。

我的尝试如下

func clearBit (num: Int, i: Int) -> Int{
let mask = (~(1 << i))
return ( num & mask )
}

现在我的第一个示例按预期运行:

clearBit(num: 10011, i: 0) // == 10010

但是,删除第一个元素

clearBit(num: 10011, i: 1) // == 10009

不等于10010的预期结果。

我哪里错了?

最佳答案

您传递的是十进制数 10011,而不是位为 1 0 0 1 1 的二进制数。如果您希望它被视为二进制,您应该在数字文字前加上 0b:

let number = 0b10011        // 19
clearBit(num: number, i: 1) // 17

稍后如果您想将这些数字显示为二进制,您可以将它们转换为以 2 为基数的字符串:

String(19, radix: 2) // "10011"
String(17, radix: 2) // "10001"

关于swift - 使用按位运算快速清除第 i 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52870425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com