C言語を使用して、指定された2進数の2’c補数を検索します
以下に示す例を考えてみましょう-
例
入力 は次のとおりです:
2進数を入力してください:10010001
出力 は次のとおりです:
10010001の1の補数は01101110です
10010001の2の補数は01101111です
アルゴリズム
アルゴリズムを参照して、特定の2進数の2’c補数を見つけます。
ステップ1-開始します。
ステップ2-実行時に2進数を読み取ります。
ステップ3-2進数をstrdpにコピーします。
ステップ4− len:=strlen(str)
ステップ5-i=0からlen-1の場合
ステップ5.1-str[i]==‘1’ then
ステップ5.1.1− str [i] ==‘0’
ステップ5.2-その他
ステップ5.2.1− str [i] ==‘1’
ステップ5.3− i:=i + 1
ステップ6-マスク:=1
ステップ7− iの場合:=len-1から0do
ステップ7.1-マスク==1の場合
ステップ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補数を見つけるための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's complement */{ if(str[i]=='1') str[i]='0'; else str[i]='1'; } printf("1\'s complement of %s is %s\n",strdp,str); mask=1; for(i=strlen(str)-1;i>=0;i--){ if(mask==1){ if(str[i]=='1'){ str[i]='0'; mask=1; } else{ str[i]='1'; mask=0; } } } printf("2\'s complement of %s is %s",strdp,str); }
出力
上記のプログラムを実行すると、次の結果が得られます-
Enter a binary number:11001110 1's complement of 11001110 is 00110001 2's complement of 11001110 is 00110010
-
反復関数を使用して、指定された数値をC言語で逆の順序で出力します
問題 反復関数、つまりCプログラミング言語を使用したwhileループを使用して、指定されたものを逆の順序で印刷するにはどうすればよいですか? 解決策 これまで、文字列関数を使用して文字列関数を使用せずに文字列を反転する方法を見てきましたが、次に、事前定義された関数を使用せずに数値を反転する方法を見てみましょう- アルゴリズム 入力 −実行時に番号を付けます Step 1: Declare the variable number,reverse Step 2: Initialize reverse= 0 Step 3: while number>0 &nb
-
C言語を使用して文字列を数値に変換し、数値を文字列に変換する
問題 Cプログラミング言語での文字列から数値への変換および数値から文字列への変換とはどういう意味ですか? 解決策 変換に使用できる関数は2つあります。彼らは- sscanf()-文字列を数値に変換します sprintf()-数値を文字列に変換するために使用されます 文字列から数値への変換 sscanf()関数を使用して文字列を数値に変換できます- 構文 sscanf (string name, “control string”,variable list) 例 #include<stdio.h> main (){