2の補数を含む10進数から2進数

progNewbie

私は次のように10進数を2進数に変換しようとしました:入力intと2進数intを取得しました。

int rem;
int bin[32] = {0};

for(int i=0; input != 0; i++) { //making array of binary, but reversed
    rem = input%2;
    bin[i] = abs(rem);
    input = input / 2;
}

for(int i = 0; i < 32; i++) { //reversed binary is put in correct order
    binary[i] = bin[31 - i];
}

ここで、入力が「-5」のように負の場合、2の補数が得られるようにします。

すべてのビットを「〜」で補完しようとすると、どういうわけか「-1」になります。

for (int i = 0; i < 32; i++) {
    binary[i] = ~binary[i];
}
rustyx

もうすぐです。

ごとint1ビットを格納するため、たとえば^ 1(XOR 1)でそのビットのみを反転する必要がありますそう~すれば、0は1になり、1は0になります。チルダ演算子はすべてのビットを反転するので、0は-1になり、1は-2になります(つまり、必要なものではありません)。

次に、2の補数を無効にするには、次のことを行う必要があります。

  1. それを反転します
  2. 追加1理由

例えば:

for (int i = 0; i < 32; i++) {
    binary[i] ^= 1;
}

for (int i = 31; i >= 0; i--) {
    binary[i] ^= 1;
    if (binary[i])
        break;
}

または、2つのステップを1つに組み合わせます。

for (int i = 31, carry = 0; i >= 0; i--) {
    if (carry || !binary[i]) {
        binary[i] ^= 1;
        carry = 1;
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

10進数から2進数:2の補数、ネガの表現の改善

分類Dev

Javaの2の補数の16進数を10進数に

分類Dev

10進数から2進数への関数、Python

分類Dev

2進数から10進数(膨大な数の場合)

分類Dev

数値を10進数から2進数に変換する

分類Dev

Swift:符号付き2の補数Uint8から10進数への16進数

分類Dev

10進数から2進化10進数

分類Dev

Javaでの10進数から2進数への変換

分類Dev

Javaでの10進数から2進数への割り当て

分類Dev

Cでの10進数から2進数への変換

分類Dev

C ++での2進数から10進数への変換

分類Dev

2進数のASCIIから10進数への変換

分類Dev

2進数のASCIIから10進数への変換

分類Dev

10進数からcの2進数への障害

分類Dev

負の10進数から2進数のcコード

分類Dev

10進数から2進数への変換

分類Dev

10進数から2進数の自己チャレンジ

分類Dev

10進数から2進数のPythonアルゴリズム

分類Dev

2進数から10進数へのc

分類Dev

コンピューターの10進数から2進数

分類Dev

10進数から2進数への変換C ++

分類Dev

2進数から10進数への再帰

分類Dev

10進数から2進数へのコンバーター

分類Dev

10進数から2進数への変換エラー

分類Dev

10 進数から 2 進数への変換

分類Dev

10進数から2進数の間違った出力

分類Dev

10進数から2進数への変換を高速化する方法

分類Dev

長整数値Cを使用した10進数から2進数への変換

分類Dev

10進数から2進数への変換-0.1を変換する方法は?