1. 程式人生 > >十進位制負數轉化為二進位制

十進位制負數轉化為二進位制

#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; }

這裡寫圖片描述