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
0