아래 주어진 예를 고려하십시오 -
예시
입력 다음과 같습니다:
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