Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어를 사용하여 주어진 이진수에 대한 2' 보수 찾기

<시간/>

아래 주어진 예를 고려하십시오 -

예시

입력 다음과 같습니다:

2진수를 입력하세요:10010001

출력 다음과 같습니다:

10010001의 1의 보수는 01101110입니다.

10010001의 2의 보수는 01101111입니다.

알고리즘

주어진 이진수에 대한 2' 보수를 찾는 알고리즘을 참조하십시오.

1단계 - 시작합니다.

2단계 - 런타임에 이진수를 읽습니다.

3단계 - 이진수를 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

6단계 - 마스크:=1

7단계 - i의 경우:=len-1에서 0으로

7.1단계 - 마스크 ==1이면

7.1.1 단계 - str[i] =='1'이면

7.1.1.1 단계 - str[i]:='0'

7.1.1.2 단계 - 마스크:=1

7.1.2단계 - 그렇지 않은 경우

7.1.2.1 단계 − str[i]:='1'

7.1.2.2 단계 - 마스크:=0

7.1.3단계 -

인 경우 종료

7.2단계 -

인 경우 종료

8단계 - 2의 보수를 출력합니다.

9단계 - 중지합니다.

프로그램

다음은 주어진 이진수에 대한 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'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