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

在Swift中将负数更改为二进制,swift,Swift,我曾尝试使用 String(-1, radix: 2) 它应该打印出0b1000,但打印出-1。 我尝试过使用另一个数字并寻找另一个教程,但它没有指定负数。 这方面有什么最佳实践吗?谢谢。func printbary4(x:Int){ func printBinary4(x: Int) { let numBit = 4 var i = x if i < 0 { i = 0b1 << numBit + i } var

我曾尝试使用

String(-1, radix: 2)
它应该打印出0b1000,但打印出-1。 我尝试过使用另一个数字并寻找另一个教程,但它没有指定负数。 这方面有什么最佳实践吗?谢谢。

func printbary4(x:Int){
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
让它=4 变量i=x 如果i<0{
i=0b1
0b1000
不是-1你知道我的意思,兄弟。你能告诉我怎么做吗?我不知道你的意思,一点也不。问得更具体些。