📅  最后修改于: 2020-10-22 00:53:39             🧑  作者: Mango
C中的2s补码由C中的1s补码生成。众所周知,二进制数的1s补码是通过将位1转换为0和0转换为1来创建的;通过将二进制数的1s补码加1来生成二进制数的2s补码。
简而言之,我们可以说C中的2s补码定义为C中一个人的补码与一个人的补码之和。
在上图中,二进制数等于00010100,并且其补码通过将位1转换为0以及将0转换为1来计算。因此,一个人的补数变为11101011。计算一个人的补数后,我们通过在一个人的补数上加1来计算两个人的补数,其结果为11101100。
让我们创建一个2s补码程序。
#include
int main()
{
int n; // variable declaration
printf("Enter the number of bits do you want to enter :");
scanf("%d",&n);
char binary[n+1]; // binary array declaration;
char onescomplement[n+1]; // onescomplement array declaration
char twoscomplement[n+1]; // twoscomplement array declaration
int carry=1; // variable initialization
printf("\nEnter the binary number : ");
scanf("%s", binary);
printf("%s", binary);
printf("\nThe ones complement of the binary number is :");
// Finding onescomplement in C
for(int i=0;i=0; i--)
{
if(onescomplement[i] == '1' && carry == 1)
{
twoscomplement[i] = '0';
}
else if(onescomplement[i] == '0' && carry == 1)
{
twoscomplement[i] = '1';
carry = 0;
}
else
{
twoscomplement[i] = onescomplement[i];
}
}
twoscomplement[n]='\0';
printf("%s",twoscomplement);
return 0;
}
输出量