2011-10-05 330 views
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」。我能做些什麼來解決這個問題?提前致謝!!

+0

您可能泄漏內存,您應該返回一個自動釋放的可變字符串。 – jrturton

回答

2

您需要額外一點的標誌。

實施例:

1xxxx表示二進制數+ xxxx

0yyyy代表二進制數字- yyyy

-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)]