给定二进制数的二进制补码可以通过以下两种方法计算:
方法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