Xem thêm

Chuyển cơ số 10 thành cơ số 2 trong C/C++

Huy Erick
Chuyển đổi cơ số 10 thành cơ số 2 là một trong những vấn đề phổ biến trong việc thay đổi cơ số. Vấn đề này giúp chúng ta làm quen với các hệ cơ...

Chuyển đổi cơ số 10 thành cơ số 2 là một trong những vấn đề phổ biến trong việc thay đổi cơ số. Vấn đề này giúp chúng ta làm quen với các hệ cơ số khác nhau. Ngoài cơ số 10 mà chúng ta thường sử dụng, còn có một số hệ cơ số khác được sử dụng như 2, 8, 16. Trong bài viết này, chúng ta sẽ cùng nhau giải quyết bài toán chuyển đổi từ cơ số thập phân sang cơ số nhị phân bằng C/C++.

Cơ số nhị phân là gì?

Cơ số nhị phân (hoặc còn gọi là hệ đếm cơ số hai) là hệ đếm sử dụng hai ký tự để biểu diễn một giá trị số, bằng cách sử dụng tổng số mũ của 2. Hai ký tự đó thường là 0 và 1; chúng thường được sử dụng để biểu diễn hai giá trị điện áp tương ứng (có điện áp cao hoặc không có điện áp, hoặc điện áp thấp là 1). Vì tính đơn giản và dễ dàng thực hiện về mặt vật lý, ví dụ như trong các mạch điện tử, cơ số nhị phân đã trở thành một phần tạo nên cơ bản trong các máy tính hiện đại.

Ví dụ:

10112 = 12^0 + 12^1 + 02^2 + 12^3 = 11102

Cách chuyển đổi từ cơ số 10 sang cơ số 2

Để hiểu cách chuyển đổi từ cơ số 10 sang cơ số 2, hãy xem ví dụ dưới đây:

Cách chuyển cơ số 10 sang cơ số 2 Hình ảnh minh họa cách chuyển cơ số 10 sang cơ số 2

Để chuyển đổi từ cơ số thập phân sang cơ số nhị phân, bạn cần thực hiện việc chia tổng số cho 2 cho đến khi nó bằng 0. Trong quá trình chia, lưu lại số dư của mỗi lần chia.

Vì là phép chia cho 2, nên số dư chỉ có thể là 0 hoặc 1.

Sau khi có được số dư cho tất cả các lần chia, chúng ta đảo ngược thứ tự của chúng theo chiều từ sau lên (pop remain orders) để có được số nhị phân cần thiết.

Trong hình ảnh, số dư được lưu trong biến "rem" và được đẩy vào hàng đợi (queue). Ta thực hiện việc lấy phần tử ra khỏi hàng đợi cho đến khi hàng đợi rỗng, kết quả sẽ là số nhị phân.

Code chuyển cơ số thập phân sang cơ số nhị phân

#include 
using namespace std;

int main() {
    long dec, rem, i = 1, sum = 0;
    cout << "Nhập số thập phân cần chuyển: ";
    cin >> dec;

    do {
        rem = dec % 2;
        sum = sum + (i * rem);
        dec = dec / 2;
        i = i * 10;
    } while (dec > 0);

    cout << "Số nhị phân của số đã cho là: " << sum << endl;

    return 0;
}

Kết quả:

Nhập số thập phân cần chuyển: 16 Số nhị phân của số đã cho là: 10000

Một số cách giải khác

Dưới đây là một số giải pháp được tham khảo từ trang geeksforgeeks:

// Chuyển đổi số thập phân thành số nhị phân
#include 
using namespace std;

// Hàm chuyển đổi từ thập phân sang nhị phân
void decToBinary(int n) {
    // Mảng để lưu trữ số nhị phân
    int binaryNum[1000];

    // Biến đếm cho mảng số nhị phân
    int i = 0;
    while (n > 0) {
        // Lưu lại phần dư vào mảng số nhị phân
        binaryNum[i] = n % 2;
        n = n / 2;
        i++;
    }

    // In ra số nhị phân theo thứ tự đảo ngược
    for (int j = i - 1; j >= 0; j--) {
        cout << binaryNum[j];
    }
}

int main() {
    int n = 17;
    decToBinary(n);
    return 0;
}

Kết quả chạy thử: 10001

Một cách nâng cao hơn, sử dụng toán tử dịch bit như sau:

// Chuyển đổi số thập phân thành số nhị phân sử dụng toán tử dịch bit
#include 
using namespace std;

// Hàm thực hiện chuyển đổi từ thập phân sang nhị phân
int decToBinary(int n) {
    // Kích thước của một số nguyên được giả định là 32 bit
    for (int i = 31; i >= 0; i--) {
        int k = n >> i;
        if (k & 1) {
            cout << "1";
        } else {
            cout << "0";
        }
    }
}

int main() {
    int n = 32;
    decToBinary(n);
}

Kết quả chạy thử: 00000000000000000000000000100000

Như vậy, chúng ta đã hoàn thành việc chuyển đổi từ cơ số thập phân sang cơ số nhị phân. Nếu có bất kỳ câu hỏi nào, hãy để lại một bình luận phía dưới.

Chúc các bạn học tốt!

1