在Swift中将负数更改为二进制

时间:2017-03-19 06:35:43

标签: swift

我尝试使用

将Integer值-1转换为二进制
String(-1, radix: 2)

它应该打印出0b1000但它打印出-1。 我尝试使用另一个数字并寻找另一个教程,但它没有指定负数。 这有什么最好的做法吗?谢谢。

1 个答案:

答案 0 :(得分:2)

func printBinary4(x: Int) {
    let numBit = 4

    var i = x
    if i < 0 {
        i = 0b1 << numBit + i
    }

    var str = String(i, radix: 2)
    if str.characters.count < numBit {
        str = String(repeatElement("0", count: numBit - str.characters.count)) + str
    }
    print(str)
}

printBinary4(x: -1)
printBinary4(x: -2)
printBinary4(x: -3)
printBinary4(x: 0)
printBinary4(x: 4)

1111
1110
1101
0000
0100