Chuyển số dạng 0.abc thành số nhị phân

em có ghi những gì em hỏi ở dưới ảnh rồi ạ, thanks mn

#include<iostream>

using namespace std;

void decToBin_num(int number_dec){
	int array[32],i;
	for(i=0;number_dec>0;i++){
		array[i]=number_dec%2;
		number_dec=number_dec/2;
	}
	for(i=i-1 ;i>=0 ;i--){
		cout<<array[i];
	}
}
void decToBin_dec(double dec){
	int array[32],i=0,dem=0;

	do{
		dec*=2;
		if(dec>1) {
			array[i]=1;
			dec=dec-1;
			i++;
			dem++;
		}
		else {
			array[i]=0;
			i++;
			dem++;
		}
	}	
	while(dec!=1);
	array[dem]=1;
	dem++;
	for(int j=0;j<dem;j++){
		cout<<array[j];
	}

}
int main(){
	double num,dec;
	char decpoint;
	cout<<"Nhap so thap phan can chuyen doi: ";
	cin>>num;
	dec = num-int(num);
	cout<<dec;
	cout<<endl;
	decToBin_num(int(num));
	cout<<endl;
	decToBin_dec(dec);
	
	
	return 0;
}

chưa gì đến code,
bạn cần phải hiểu, biểu diễn số thập phân ở dạng nhị phân nó có những vấn đề gì, hay nói đúng hơn là kiểu số thực được biểu diễn dưới dạng nhị phân nó là như thế nào, có những vấn đề gì xoay quanh chủ đề này

một trong những vấn đề quan trọng nhất của việc biểu diễn số thực dưới dạng nhị phân, đó là độ chính xác. Sẽ có những số không thể biểu diễn chính xác được, mà cần phải có quy ước nó chính xác đến mức nào. Ví dụ kiểu float trong c++ dùng 32 bit (4 byte) để biểu diễn, range giá trị vào khoảng 1.5 x 10^(-45) to 3.4 x 10^38

như vậy, cần có quy ước là biểu diễn đến độ chính xác bao nhiêu để biết mà dừng.

Lời khuyên (thích thì đọc, không đọc cũng không sao):
Mấy nay thấy bạn hỏi nhiều câu khá đơn giản, có vẻ như bạn mới học, mà thấy nhiều người cũng hướng dẫn nên mình cũng không comment
Nhưng tới bài hôm nay thì thấy có vẻ như bạn có vấn đề về kiến thức cơ bản (hoặc có thể là đề bài bị lủng ở vấn đề quy ước độ chính xác, hoặc đại khái là không ai nói tới vấn đề đó với bạn). Dù là nguyên nhân gì thì việc học ở bản cũng rất quan trọng, giải được bài tập không biết có quan trọng hay không, nhưng chắc chắn kiến thức (kinh nghiệm) khi làm bài tập thì quan trọng đó. nên kể cả khi bạn post 1000 câu hỏi trên này và giải được 1000 bài tập cũng chưa chắc làm bạn giỏi hơn bao nhiêu đâu
việc vận dụng kiến thức mình đã học để giải quyết vấn đề, mấy câu hỏi trước của bạn đặt ra, có người chỉ cần 1 2 dòng code là xong, và cú pháp cũng chỉ có bấy nhiêu cơ bản đó, chẳng có hàm nào là lạ để giải quyết vấn đề của bạn cả.
vậy cái bạn cần đặt ra là làm sao họ lại biết dùng những kiến thức cơ bản để giải quyết vấn đề, còn bạn thì không. thay vì là tìm được một câu trả lời và mang đi nộp bài

Nhiều bạn cho rằng mấy cái những cái như học nhị phân biểu diễn số thực thật là nhức đầu, mang vào cũng chả ích lợi gì, vì chỉ cần khai báo rồi dùng mà thôi, và rồi bỏ qua, chẳng coi trọng
đến khi sau này gặp vấn đề lại không biết vì sao
image

7 Likes

\large 0.48_{10}= \frac{12}{25} ra vô hạn tuần hoàn là đúng :smiley: vì mẫu chia hết cho 5.

5 Likes

vâng em hiểu ý anh rồi, cảm ơn anh đã góp ý ạ

1 Like

Bạn lưu ý không post nội dung câu hỏi dưới ảnh (vì ảnh có thể dead) mà post dưới dạng text nhé.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?