Loading Now

Binary Converter 1

Đối với môn Tin học, chuyện học sinh thường được giao các bài tập liên quan đến dãy số nhị phân là rất thường xuyên. Nhưng hôm nay, thầy của Minh giao cho cả lớp một bài tập rất khó đối với khả năng của họ, cụ thể:

Cho một chuỗi ký tự alphabet, hãy chuyển đổi chuỗi này thành dữ liệu có thể truyền trực tiếp giữa các máy tính.

Theo thông tin được biết, Minh có thể chuyển đổi các ký tự thành mã nhị phân. Quả thật bài này rất khó, nhưng phần thưởng cho bài tập này lại vô cùng hấp dẫn, ai làm nhanh nhất và hoàn thành đúng nhất bài tập sẽ được nhận một điểm 10 hệ số 2. Vì rất muốn đạt được điểm 10, Minh muốn nhờ đến tài năng của các bạn để giải bài tập, hãy giúp Minh nhé!

Chú ý:

  • Hệ nhị phân chỉ có 2 số 0 và 1, tương ứng với 2 trạng thái OFF và ON (Sai và Đúng). Nhị phân đọc từ phải sang trái.
  • Để giải mã một dãy số nhị phân, ta làm như sau:
    • Bước 1: Viết số nhị phân thành dãy
    • Bước 2: Từ phải sang trái, viết số mũ của 2 bên dưới dãy số, lần lượt từ 2^0 cho đến hết
    • Bước 3: Quy đổi số mũ thành giá trị
    • Bước 4: Bỏ những giá trị ở số 0, lấy giá trị ở số 1
    • Bước 5: Cộng các giá trị đã lấy ta sẽ được kết quả chuyển đổi
  • Dấu khoảng trắng được chuyển thành nhị phân sẽ có mã như sau: 00100000

Ví dụ giải mã dãy số nhị phân 1001001:

Bước 1 1 0 0 1 0 0 1
Bước 2 2^6 2^5 2^4 2^3 2^2 2^1 2^0
Bước 3 64 32 16 8 4 2 1
Bước 4 64 x x 8 x x 1

Sau bước 4 ta có các giá trị cần lấy là 64, 8, 1, và tổng của chúng là 64 + 8 + 1 = 73. Vậy số nhị phân 1001001 trong hệ thập phân là 73.

Nếu muốn chuyển chữ cái sang nhị phân và ngược lại, bạn xem bảng quy đổi sau nhé: 

Mỗi chữ cái sẽ được thể hiện bằng một dãy nhị phân, người ta dùng dấu khoảng trắng để phân biệt các dãy nhị phân với nhau.

Ví dụ:

  • Với text = "AbC" thì text_to_binary = "01000001 01100010 01000011"
  • Với text = "MacBook" thì text_to_binary = "01001101 01100001 01100011 01000010 01101111 01101111 01101011"

Đầu vào/Đầu ra:

  • [Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript.

  • [Đầu vào] String

    1 < text.length < 10^6
  • [Đầu ra] String

    Dãy nhị phân tương ứng.

Post Comment

Contact