当Int为零和负零时,定义Int的符号

时间:2018-06-16 16:00:03

标签: swift

我的值为Int类型。我需要定义这个值的符号。而且我不知道如何使用-0来处理边缘情况。

  

signum - 如果此值为负,则返回-1;如果为正,则返回1;   否则,0

0.signum()  // 0
-0.signum() // 0

我尝试将其转换为Double,但也没有帮助。

Double(-0).floatingPointClass == .negativeZero // false

String

String(-0) // "0"

这个问题有解决办法吗?或0类型的-0Int是否相同?

1 个答案:

答案 0 :(得分:3)

这无法完成。 0-0没有Int的单独表示形式。 Swift中的整数(与其他编程语言一样)使用2's complement表示。要取消数字,请反转所有位并添加1。从Int 0开始,所有位均为0。反转所有位会产生所有1,然后添加1会导致它返回到所有0,因为进位位退出顶端。因此0-0具有完全相同的表示形式。