01/10/2018, 00:51
Đổi một số hệ 10 sang nhị phân
/mn cho em hỏi là em sai chỗ nào ạ?. Em nhìn thuật toán mãi mà k0 tìm thấy lỗi, nhưng khi chạy lại k0 cho ra đáp án đúng/
#include<stdio.h>
#include<math.h>
#include<conio.h>
void chuyenNhiPhan (int n);
int main()
{
int n;
printf("nhap so nguyen N:");
scanf_s("%d",&n);
chuyenNhiPhan (n);
_getch();
}
void chuyenNhiPhan (int n)
{
int u ;
u = abs(n);
int a[8],i;
for( i=7; i>=0; i--);
{
a[i] = u%2;
u = u/2;
}
if(n<0)
{
// tu bu 2 chuyen sang bu 1
for( i=7; i>=0; i--)
{
if(a[7]==0)
{
a[7]=1;
break;
}
if(a[7]==1)
a[7]=0;
if((i-1)!=-1)
{
if(a[i-1]==0)
a[i-1]=0;
else //if(a[i+1]==1)
a[i-1]=1;
}
}
//chuyen tu so bu 1 sang so nhi phan cu so am
for( i=0; i<=7; i++)
{
if(a[i]==1)
a[i]=0;
else
a[i]=1;
}
}
//in ra binary
printf("so nhi phan la: ");
for (i=0; i<=7; i++)
{
printf("%d ",a[i]);
}
}
Bài liên quan