Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

XORを使用した特定の文字列に対する2の補完?


このセクションでは、バイナリ文字列に対してXOR演算を使用して2の補数を見つける方法を説明します。 2の補数は、実際には1の補数+1です。XOR演算を使用して1の補数を取得します。

LSbから文字列をトラバースし、0を探します。0が得られるまですべての1を0に反転します。次に、見つかった0を反転します。

LSbからトラバースします。次に、1になるまですべての0を無視します。最初の1を無視すると、XOR演算を使用してすべてのビットを切り替えます。

アルゴリズム

get2sComp(bin)

begin
   len := length of the binary string
   flag := false
   for i := len-1 down to 0, do
      if bin[i] is 0, and flag is not set, then
         ignore the next part, jump to next iteration
      else
         if flag is set, then
            bin[i] := flip of bin[i]
         end if
         flag := true
      end if
   done
   if the flag is not set, then
      attach 1 with bin and return
   else
      return bin
   end if
end

#include <iostream>
using namespace std;
string get2sComplement(string bin) {
   int n = bin.length();
   bool flag = false; //flag is used if 1 is seen
   for (int i = n - 1; i >= 0; i--) { //traverse from last bit
      if (bin[i] == '0' && !flag) {
         continue;
      } else {
         if (flag)
            bin[i] = (bin[i] - '0') ^ 1 + '0'; //flip bit using XOR, then convert to ASCII
         flag = true;
      }
   }
   if (!flag) //if no 1 is there, just insert 1
      return "1" + bin;
   else
      return bin;
}
int main() {
   string str;
   cout << "Enter a binary string: ";
   cin >> str;
   cout << "2's complement of " << str <<" is " << get2sComplement(str);
}

出力

Enter a binary string: 10110110
2's complement of 10110110 is 01001010

  1. Pythonの組み込み関数を使用した特定の文字列の順列

    このチュートリアルでは、 Pythonの組み込み関数を使用して文字列の順列を見つけます。 順列と呼ばれます 。メソッド順列 itertoolsに存在します モジュール。 文字列の順列を見つける手順 itertoolsをインポートします モジュール。 文字列を初期化します。 itertools.permutationsを使用します 文字列の順列を見つけるメソッド。 3番目のステップでは、メソッドはオブジェクトを返し、それをリストに変換します。 リストには、文字列の順列がタプルとして含まれています。 例 プログラムを見てみましょう。 ## importing the modu

  2. Pythonを使用して特定の文字列が生成されるまで、ランダムな文字列を生成する

    文字列が与えられた場合、私たちのタスクは、文字、特殊文字、数字などのランダムな組み合わせを使用していくつかの文字列を生成することです。 例 InputPPOutputAKAK ..... アルゴリズム ステップ1:文字列を入力します。ステップ2:ここでは、小文字、大文字、特殊文字のすべての可能な組み合わせを変数に格納します。ステップ3:2つのループを使用し、ランダム関数を使用します。これから、文字、記号の可能なすべての組み合わせを取得できます。ステップ4:最後に、入力文字列と同じ同じ文字列を表示し、各ランダム文字列を指定された入力文字列と一致させます。ステップ5:両方のインデックス値が同じ