我想转换二进制数的十进制数。我正在使用这种方法:
- (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 :(得分:2)
你需要额外的一点牌。
示例:
1xxxx
代表二进制数+ xxxx
。
0yyyy
代表二进制数- yyyy
。
答案 1 :(得分:-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)]