Mình code thì ko biết sao đoạn chuyển số âm bị sai, các pro có thể sữa lại được ko?

Mình biết dân coder rất khó chịu khi đọc code của người khác nhưng mongcác bạn chịu khó giúp mình nha

Thanks nhiều

#include <stdio.h>

#include <math.h>

#include <conio.h>

int a[17];

int n;

int coSo = 2;

void nhap(); //Ham nhap so n

void nhap()

{

printf("Nhap so nguyen n can chuyen sang dang nhi phan: ");

scanf("%d", &n);

}

void chuyendoi(int x); // Ham chuyen so duong x sang dang nhi phan

void chuyendoi(int x)

{

int i, dem = 16;

while (x > 0)

{

a[dem] = x % coSo;

x = x / coSo;

dem--;

};

}

void bu2(); // Ham chuyen sang dang bu 2, de bieu dien so am

void bu2()

{

int j, nho = 1;

for (j = 16; j >= 1; j--)

{

a[j] = ~ a[j];

a[j] = a[j] + nho;

nho = a[j] / 2;

a[j] = a[j] % 2;

};

}

int main()

{

int i;

nhap();

for (i = 1; i <= 16; i++)

a = 0;

if (n < 0)

{

chuyendoi(-n);

bu2();

}

else

chuyendoi
Bài code C về chuyển Thập phân sang nhị phân YH5BAEAAAAALAAAAAABAAEAAAIBRAA7
;

printf("Bieu dien cua so %d o dang nhi phan la: \n", n);

for (i = 1; i <= 16; i++)

printf("%d", a);

getch();

return 0;

}