Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tìm phần bổ sung 2’c cho số nhị phân đã cho bằng ngôn ngữ C

Hãy xem xét một ví dụ được đưa ra bên dưới -

Ví dụ

Đầu vào như sau:

Nhập số nhị phân:10010001

Đầu ra như sau:

Phần bù của 1 của 10010001 là 01101110

Phần bù của 2 trong số 10010001 là 01101111

Thuật toán

Tham khảo một thuật toán để tìm 2 phần bổ sung cho một số nhị phân nhất định.

Bước 1 - Bắt đầu.

Bước 2 - Đọc số nhị phân trong thời gian chạy.

Bước 3 - Sao chép số nhị phân sang strdp.

Bước 4 - len:=strlen (str)

Bước 5 - For i =0 to len-1 do

Bước 5.1 - if str [i] ==‘1’ then

Bước 5.1.1 - str [i] ==‘0’

Bước 5.2 - Khác

Bước 5.2.1 - str [i] ==‘1’

Bước 5.3 - i:=i + 1

Bước 6 - Mặt nạ:=1

Bước 7 - Đối với i:=len-1 to 0 do

Bước 7.1 - if mask ==1 then

Bước 7.1.1 - if str [i] ==‘1’ then

Bước 7.1.1.1 - str [i]:=‘0’

Bước 7.1.1.2 - mask:=1

Bước 7.1.2 - khác

Bước 7.1.2.1 - str [i]:=‘1’

Bước 7.1.2.2 - mask:=0

Bước 7.1.3 - Kết thúc nếu

Bước 7.2 - Kết thúc nếu

Bước 8 - In phần bổ sung của 2.

Bước 9 - Dừng lại.

Chương trình

Sau đây là chương trình C để tìm phần bổ sung 2’c cho một số nhị phân nhất định -

#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);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

Enter a binary number:11001110
1's complement of 11001110 is 00110001
2's complement of 11001110 is 00110010