使用C語言查詢給定二進位制數的二進位制補碼


問題陳述

給定一個二進位制數,您必須編寫一個C語言程式來查詢給定二進位制數的二進位制補碼

考慮以下示例:

示例

輸入如下:

輸入一個二進位制數: 10010001

輸出如下:

10010001 的反碼是 01101110

10010001 的補碼是 01101111

演算法

參考查詢給定二進位制數的二進位制補碼的演算法。

步驟 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 - Mask: = 1

步驟 7 - 對於 i: = len-1 到 0 執行

     步驟 7.1 - 如果 mask == 1 則

        步驟 7.1.1 - 如果 str[i] == ‘1’ 則

           步驟 7.1.1.1 - str[i]: = ‘0’

           步驟 7.1.1.2 - mask: = 1

     步驟 7.1.2 - 否則

        步驟 7.1.2.1 - str[i]: = ‘1’

        步驟 7.1.2.2 - mask: = 0

     步驟 7.1.3 - 結束 if

     步驟 7.2 - 結束 if

步驟 8 - 列印二進位制補碼。

步驟 9 - 停止。

查詢給定二進位制數的二進位制補碼的 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
",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

更新於:2024年6月20日

瀏覽量 205

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.