在Swift中,为什么按位不需要加一来得到一个正整数对应的负整数?
In Swift, why does a bitwise NOT require adding one to get a positive integer's corresponding negative integer?
例如,
func challenge26c(subtract: Int, from: Int) -> Int {
return from + (~subtract + 1)
}
是否同样适用于其他编程环境?
这是由于整数在 Swift 中的存储方式(在我能想到的几乎所有情况下),在所谓的 two's complement notation 中。如果你想要一个“正整数对应的负整数”(数学上称为 加法逆),你可以简单地使用一元负号 -
(例如,如果 x
为5,则-x
变为-5。
不过,在我看来,不使用 -
来实现减法是一项挑战,因此您可能需要阅读补码符号。
例如,
func challenge26c(subtract: Int, from: Int) -> Int {
return from + (~subtract + 1)
}
是否同样适用于其他编程环境?
这是由于整数在 Swift 中的存储方式(在我能想到的几乎所有情况下),在所谓的 two's complement notation 中。如果你想要一个“正整数对应的负整数”(数学上称为 加法逆),你可以简单地使用一元负号 -
(例如,如果 x
为5,则-x
变为-5。
不过,在我看来,不使用 -
来实现减法是一项挑战,因此您可能需要阅读补码符号。