使用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

开启您的职业生涯

完成课程获得认证

开始学习
广告