4

我想将十进制数转换为二进制数。我正在使用这种方法:

- (NSMutableString*)intStringToBinary:(long long)element{
    NSMutableString *str = [[NSMutableString alloc] initWithString:@""];
    for(NSInteger numberCopy = element; numberCopy > 0; numberCopy >>= 1)
    {
        [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
    }
    return str;
}

如果数字“元素”> 0,一切都很好。如果数字<0,则有问题。例如,该方法不能转换数字“-1”。我能做些什么来解决这个问题?提前致谢!!

4

2 回答 2

2

你需要一个额外的标志。

例子:

1xxxx表示二进制数+ xxxx

0yyyy表示二进制数- yyyy

于 2011-10-05T06:37:00.100 回答
-1

这是一种使用 Wallar 算法在 Python 中执行此操作的方法。输入和输出是列表。

from math import *
def baseExpansion(n,c,b):
    j = 0
    base10 = sum([pow(c,len(n)-k-1)*n[k] for k in range(0,len(n))])
    while floor(base10/pow(b,j)) != 0: j = j+1
    return [floor(base10/pow(b,j-p)) % b for p in range(1,j+1)]
于 2011-11-03T05:26:30.610 回答