4

10進数を2進数に変換したい。私はこの方法を使用しています:

- (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は 2 進数を表し+ xxxxます。

0yyyyは 2 進数を表し- 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 に答える