30/09/2018, 18:15

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!

#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 à!

*grab popcorn* viết 20:29 ngày 30/09/2018

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.

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…
Leng Keng viết 20:17 ngày 30/09/2018

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

*grab popcorn* viết 20:19 ngày 30/09/2018

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)

Bài liên quan
0