Chuyển cơ số 10 sang cơ số 2 là một trong những bài toán đổi cơ số thường gặp. Bài tập này giúp các bạn làm quen được với các hệ cơ số khác nhau. Ngoài hệ cơ số 10 chúng ta hay dùng. Còn có một số hệ cơ số hay dùng khác là 2, 8, 16. Trong bài viết này, mình sẽ cùng các bạn đi giải bài tập đổi cơ số thập phân sang nhị phân nhé.
Xem hướng dẫn đổi cơ số 2 sang cơ số 10 tại đây.
Một số lưu ý
Cơ số 10 là cơ số chúng ta thường dùng nhất, nó còn có tên gọi khác là hệ thập phân.
Tương tự, cơ số 2 còn được gọi là hệ nhị phân(chỉ gồm 2 số 0 và 1).
Bài viết này sẽ hướng dẫn các bạn cách chuyển từ hệ thập phân sang nhị phân sử dụng C/C++.
Hệ nhị phân là gì?
Hệ nhị phân (hay hệ đếm cơ số hai) là một hệ đếm dùng hai ký tự để biểu đạt một giá trị số, bằng tổng số các lũy thừa của 2. Hai ký tự đó thường là 0 và 1; chúng thường được dùng để biểu đạt hai giá trị hiệu điện thế tương ứng (có hiệu điện thế, hoặc hiệu điện thế cao là 1 và không có, hoặc thấp là 0). Do có ưu điểm tính toán đơn giản, dễ dàng thực hiện về mặt vật lý, chẳng hạn như trên các mạch điện tử, hệ nhị phân trở thành một phần kiến tạo căn bản trong các máy tính đương thời.
Ví dụ:
10112 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1110
Cách chuyển cơ số 10 sang cơ số 2
Để nắm được cách chuyển cơ số 10 sang cơ số 2, bạn hãy xem ví dụ trong hình dưới đây
Để chuyển từ hệ thập phân sang nhị phân. Bạn cần thực hiện chia nguyên số đó cho 2 cho tới 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ư ở tất cả các lần chia. Ta đảo ngược thứ tự theo chiều từ cuối lên(pop remain oders) thì được số nhị phân cần thiết.
Trong hình trên số dư là biến rem
và được đẩy vào queue. Ta thực hiện pop queue cho tới khi rỗng sẽ thu được kết quả ở hệ nhị phân.
Code chuyển hệ thập phân sang nhị phân
#include <iostream> using namespace std; int main() { long dec,rem,i=1,sum=0; cout<<"Enter the decimal to be converted:"; cin>>dec; do { rem=dec%2; sum=sum + (i*rem); dec=dec/2; i=i*10; }while(dec>0); cout<<"The binary of the given number is:"<<sum<<endl; cin.get(); cin.get(); return 0; }
Output:
Enter the decimal to be converted:16 The binary of the given number is:10000
Một số cách giải khác
Lời giải tham khảo từ geeksforgeeks: Sử dụng mảng để lưu lại giá trị phép chia dư cho 2. Sau đó in ra theo chiều ngược lại
// C++ program to convert a decimal // number to binary number #include <iostream> using namespace std; // function to convert decimal to binary void decToBinary(int n) { // array to store binary number int binaryNum[1000]; // counter for binary array int i = 0; while (n > 0) { // storing remainder in binary array binaryNum[i] = n % 2; n = n / 2; i++; } // printing binary array in reverse order for (int j = i - 1; j >= 0; j--) cout << binaryNum[j]; } // Driver program to test above function 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:
// CPP program to Decimal to binary conversion // using bitwise operator // Size of an integer is assumed to be 32 bits #include <iostream> using namespace std; // Function that convert Decimal to binary int decToBinary(int n) { // Size of an integer is assumed to be 32 bits for (int i = 31; i >= 0; i--) { int k = n >> i; if (k & 1) cout << "1"; else cout << "0"; } } // driver code int main() { int n = 32; decToBinary(n); }
Kết quả chạy thử:
00000000000000000000000000100000
Như vậy, Nguyễn Văn Hiếu Blog đã hoàn thành bài hướng dẫn chuyển số thập phân sang nhị phân. Nếu có bất kỳ thắc mắc nào, bạn hãy để lại lời nhắn phía dưới bình luận.
Chúc các bạn học tập tốt!
Để lại một bình luận