BÀI 9: ĐỔI SỐ Ở HỆ NHỊ PHÂN VÀ BÁT PHÂN SANG HỆ THẬP PHÂN

Có thể là bạn đã biết cách chuyển đổi số từ hệ thập phân sang hệ nhị phân ( cơ số hai )hoặc bát phân ( cơ số 8 ). Vậy còn nếu ngược lại, chuyển từ hệ nhị phân hoặc bát phân sang thập phân thì sao? Ta sẽ tìm hiểu về vấn đề này. 1 ) Chuyển đổi dãy số từ hệ nhị phân sang hệ thập phân: Việc đầu tiên, dĩ nhiên là ta phải xét xem hệ nhị phân bao gồm hai kí tự: 0 và 1, còn hệ thập phân thì gồm các kí tự: 0; 1; 2; 3; 4; 5; 6; 7; 8; 9. Để chuyển đổi một dãy nhị phân có n phần tử sang hệ thập phân ta làm như sau: Ta lấy phần tử thứ nhất (từ phải qua trái ) nhân với 2 mũ n-1, phần tử thứ hai nhân với 2 mũ n-2,... đến khi lấy phần tử thứ n nhân cho 2 mũ 0, rồi cộng tất cả chúng lại, sẽ được kết quả là một số ở hệ thập phân. *** Ví dụ *** Chọn một dãy nhị phân: 1010. Chuyển đổi dãy 1010 ở hệ nhị phân sang số ở hệ thập phân. Ta thấy dãy nhị phân trên có 4 phần tử. Nên ta sẽ tính như sau: 1 * 2^(4-1) + 0 * 2^(4-2) + 1 * 2^(4-3) + 0 * 2^(4-4) = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0*2^0 = 8 + 0 + 2 + 0 = 10. Vậy, dãy nhị phân 1010 chuyển sang hệ thập phân có giá trị là 10. *** Demo *** #include <stdio.h> #include <math.h> #include <conio.h> void main () { int n, t = 0, x = 0, s=0; int a[32]; printf ("Hay nhap vao mot so nguyen duong: "); scanf ("%d",&n); while ( n > 0) { a[x] = n%10; n = n/10; x ++; } t = x; for ( int i = t-1; i >=0 ; i-- ) { s = s + a[i]*(int) pow ( (double) 2, i ); } printf ("So ban vua nhap da duoc doi sang he thap phan co gia tri la: "); printf ("%d\n", s); } 2 ) Chuyển đổi số ở hệ bát phân sang hệ thập phân: Hệ bát phân bao gồm các kí tự: 0; 1; 2; 3; 4; 5; 6; 7. Chuyển đổi một số ở hệ bát phân có n kí tự sang hệ thập phân ta làm như sau: Tương tự như trên, ta lấy phần tử thứ nhất (từ phải qua trái ) của số đó nhân với 8 mũ n-1, phần tử thứ hai nhân với 8 mũ n-2,.... đến khi lấy phần tử thứ n nhân với 8 mũ 0, rồi ta cộng tất cả chúng lại, sẽ được kết quả là một số ở hệ thập phân. *** Ví dụ *** Chọn một số ở hệ bát phân: 3156. Chuyển đổi số 3156 của hệ bát phân sang hệ thập phân. Ta thấy số 3156 có 4 phần tử. Nên ta sẽ làm như sau: 3 * 8^(4-1) + 1 * 8^(4-2) + 5 * 8^(4-3) + 6 * 8^(4-4) = 3 * 8^3 + 1 * 8^2 + 5 * 8 + 6 = 3 * 512 + 1 * 64 + 5 * 8 + 6 = 1536 + 64 + 40 + 6 = 1646. Vậy số 3156 của hệ bát phân chuyển sang hệ thập phân có giá trị là 1646. *** Demo *** #include <stdio.h> #include <math.h> #include <conio.h> void main () { int n, t = 0, x = 0, s=0; int a[32]; printf ("Hay nhap vao mot so nguyen duong: "); scanf ("%d",&n); while ( n > 0) { a[x] = n%10; n = n/10; x ++; } t = x; for ( int i = t-1; i >=0 ; i-- ) { s = s + a[i]* ( int ) pow ( (double) 8, i ); } printf ("So ban vua nhap da duoc doi sang he thap phan co gia tri la: "); printf("%d\n", s); }

Từ khóa » Chuyển Từ Hệ 2 Sang Hệ 10 Trong C