Chuyển kí tự từ A-Z về nhị phân

Bác nào cho em xin code chuyển kí tự từ A-Z về số nhị phân với!:smile:

#include<iostream>
using namespace std;

int daoso(int n)
{
	int s=0;
	while(n>0)
	{
		s=s*10+n%10;
		n=n/10;
 	}
	return s;
}

int nhiphan(int n)
{
	int s=0;
	while(n>0)
	{
		s=s*10+n%2;
		n=n/2;
	}
	cout<<endl<<" Chua dao: "<<s<<endl;
	int t=daoso(s);
	return t;
}

int ma()
{
	char i;
	for(i='A';i<='Z';i++)
	{
		cout<<char(i)<<" "<<int(i)<<" "<<nhiphan(i)<<endl;
	}
}

int main()
{
	ma();
	return 0;
} 

Em code được đến đây rồi nhưng vẫn còn vấn đề chưa giải quyết được.
Ví dụ:Kí tự B-66:100001, đúng là 100010, bị mất một số 0 à! :slight_smile:

Muốn ngta giúp thì đọc mấy cái topic đc ghim ở đầu page trước đi nhé.
Không mấy bao nhiêu thời gian đâu. :blush:

2 Likes

thớt giúp em với!:slight_smile: mới tham gia, có gì mong thớt chỉ giáo em

Vấn đề của bạn ở đây là ‘3’
Các số 0 đầu tiên đều bị loại trừ
Giả sử 66 nha

s = 0

1: s = s*10+66%2 = 0+0 = 0
2: s = s*10+33%2 = 0+1 = 1 << vấn đề ở đây, 

Đáng lẽ nó phải là 01 nhưng nó chỉ lưu đc 1.
Nên khi bạn đảo thì nó mất tích mấy số 0 ở cuối.
Vậy thì lúc đảo dãy bit cần thêm vài số 0 vào sao cho đủ số bit.
1 kí tự dùng 8 bits để lưu, nhưng bit thứ 8 ko xài (0100 0000), nên thêm vào cuối sao cho đủ 7bit là đc
(Ko phải ko xài mà là nó dùng cho các kí tự khác, alphabet thì nó ko xài)

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