ホームページ  >  記事  >  バックエンド開発  >  C を使用して、指定された 2 進数の 2 の補数を求めます。

C を使用して、指定された 2 進数の 2 の補数を求めます。

PHPz
PHPz転載
2023-09-05 15:21:061230ブラウズ

C を使用して、指定された 2 進数の 2 の補数を求めます。

以下の例を考えてみましょう -

Example

次のように を入力してください:

バイナリを入力してください番号 : 10010001

出力 は次のとおりです:

1 10010001 の補数は 01101110

2 10010001 の補数は 01101111

アルゴリズム

指定された 2 進数の 2 の補数を見つけるアルゴリズムを参照してください。

ステップ 1 - 始めましょう。

ステップ 2 - 実行時に 2 進数を読み取ります。

ステップ 3 - 2 進数を strdp にコピーします。

ステップ 4 - len: = strlen(str)

ステップ 5 - i = 0 から len-1 の場合、実行

ステップ 5.1 - str[i] == の場合「1」の場合

ステップ 5.1.1 - str[i] == '0'

ステップ 5.2 - それ以外の場合

ステップ 5.2.1 - str[i ] = = '1'

ステップ 5.3 - i: = i 1

ステップ 5.3 - i: = i 1

p>

ステップ 6 - マスク コード: = 1

ステップ 7 - i: = len-1 ~ 0 の場合、

ステップ 7.1 - マスク == 1 の場合、 p>

ステップ 7.1.1 - str[i の場合] ] == '1' then

ステップ 7.1.1.1 − str[i]: = '0'

ステップ 7.1.1.2 −マスク: = 1

ステップ 7.1 .2 − else

ステップ 7.1.2.1 − str[i]: = '1'

ステップ 7.1.2.2 - マスク: = 0

ステップ 7.1.3 -終了 if

ステップ 7.2 - 終了 if

ステップ 8 - 2 の補数を出力します。

ステップ 9 - 停止します。

プログラム

次は、指定された2進数の2の補数を見つけるためのCプログラムです -

ライブデモ

#include <string.h>
#include<stdio.h>
main(){
   char str[32],strdp[32];
   int mask,i;
   printf("Enter a binary number:");
   scanf("%s",str);
   strcpy(strdp,str);
   for(i=0;i<strlen(str);i++) /* computing 1&#39;s complement */{
      if(str[i]==&#39;1&#39;)
         str[i]=&#39;0&#39;;
      else
         str[i]=&#39;1&#39;;
   }
   printf("1\&#39;s complement of %s is %s</p><p>",strdp,str);
   mask=1;
   for(i=strlen(str)-1;i>=0;i--){
      if(mask==1){
         if(str[i]==&#39;1&#39;){
            str[i]=&#39;0&#39;;
            mask=1;
         }
         else{
            str[i]=&#39;1&#39;;
            mask=0;
         }
      }
   }
   printf("2\&#39;s complement of %s is %s",strdp,str);
}

出力

上記のプログラムを実行すると、次の結果が生成されます-

Enter a binary number:11001110
1&#39;s complement of 11001110 is 00110001
2&#39;s complement of 11001110 is 00110010

以上がC を使用して、指定された 2 進数の 2 の補数を求めます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。