编写C程序以查找给定数字的二进制补码

给定二进制数的二进制补码可以通过以下两种方法计算:

  • 方法1-将给定的二进制数转换为一个补数,然后加1。

  • 方法2-从最低有效位(LSB)的第一个位开始算起的尾随零,包括一个保持不变且剩余的所有零,应进行补码。

查找给定二进制数的二进制补码的逻辑如下-

for(i = SIZE - 1; i >= 0; i--){
   if(one[i] == '1' && carry == 1){
      two[i] = '0';
   }else if(one[i] == '0' && carry == 1){
      two[i] = '1';
      carry = 0;
   }else{
      two[i] = one[i];
   }
}
two[SIZE] = '\0';
printf("Two's complement of binary number %s is %s\n",num, two);

从给定的二进制数中找到一个补码的逻辑是-

for(i = 0; i < SIZE; i++){
   if(num[i] == '0'){
      one[i] = '1';
   }else if(num[i] == '1'){
      one[i] = '0';
   }
}
one[SIZE] = '\0';
printf("Ones' complement of binary number %s is %s\n",num, one);

示例

以下是C程序来查找给定数字的二进制补码-

#include<stdio.h>
#include<stdlib.h>
#define SIZE 8
int main(){
   int i, carry = 1;
   char num[SIZE + 1], one[SIZE + 1], two[SIZE + 1];
   printf("Enter the binary number\n");
   gets(num);
   for(i = 0; i < SIZE; i++){
      if(num[i] == '0'){
         one[i] = '1';
      }
      else if(num[i] == '1'){
         one[i] = '0';
      }
   }
   one[SIZE] = '\0';
   printf("Ones' complement of binary number %s is %s\n",num, one);
   for(i = SIZE - 1; i >= 0; i--){
      if(one[i] == '1' && carry == 1){
         two[i] = '0';
      }else if(one[i] == '0' && carry == 1){
         two[i] = '1';
         carry = 0;
      }else{
         two[i] = one[i];
      }
   }
   two[SIZE] = '\0';
   printf("Two's complement of binary number %s is %s\n",num, two);
   return 0;
}
输出结果

执行以上程序后,将产生以下结果-

Enter the binary number
1000010
Ones' complement of binary number 1000010 is 0111101
Two's complement of binary number 1000010 is 0111110