C语言求给定二进制数的2'c补码

考虑下面给出的例子 -

示例

该输入如下:

输入一个二进制数:10010001

该输出是如下:

10010001 的补码是 01101110

10010001 的 2 的补码是 01101111

算法

请参阅算法以找到给定二进制数的 2'c 补码。

步骤 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 to 0 do

     步骤 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 补码的 C 程序-

#include <string.h>

#include<stdio.h>

main(){

   char str[32],strdp[32];

   int mask,i;

   printf("输入一个二进制数:");

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

}

输出结果

执行上述程序时,会产生以下结果 -

输入一个二进制数:11001110

1's complement of 11001110 is 00110001

2's complement of 11001110 is 00110010

以上是 C语言求给定二进制数的2'c补码 的全部内容, 来源链接: utcz.com/z/347514.html

回到顶部