十進位制負數轉化為二進位制
阿新 • • 發佈:2019-02-09
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int main()
{
int i, j, n, b, m;
int t = 0;
int a[16] = {0};
printf("please input the decimalism number(-32767~0):\n");
scanf("%d",&n);
b = abs(n); //取正數
for( m = 0; m < 15; m++ )//正數化為二進位制
{
i = b%2 ;
j = b/2;
b = j;
a[m] = i;
}
for( m = 0; m <= 15; m++ )//各位變反
{
if(a[m] == 1)
a[m] = 0;
else
a[m] = 1;
}
for( m = 15; m >= 0; m-- )//再轉化為十進位制整數
{
if(a[m] == 1)
t = t + pow(2 ,m);
}
t = t+1;//整數加1(相當於變反加1)
for( m = 0; m <= 15; m++ )//再化為二進位制
{
i = t%2;
j = t/2;
t = j;
a[m] = i;
}
for( m = 15; m >= 0; m-- )
{
printf("%d",a[m]);
if(m%4 == 0)
printf(" ");
}
system("pause" );
return 0;
}