Nội dung chính
Đề bài
Viết chương trình C# chuyển đổi hệ cơ số.
1. Chuyển đổi số nguyên N từ hệ cơ số 10 sang hệ cơ số B bất kỳ.
2. Chuyển đổi hệ cơ số B sang hệ cơ số 10 bất kỳ.
Cách chuyển đổi hệ cơ số
- Chuyển đối hệ cơ số 10 sang hệ cơ số B
- Chuyển đối hệ cơ số B sang hệ cơ số 10
Chuyển đối hệ cơ số 10 sang hệ cơ số B
Cách chuyển đổi số nguyên N từ hệ cơ số 10 sang hệ cơ số 2, trong ảnh dưới đây là ví dụ chuyển số 15 và số 6 sang hệ cơ số 2:
- Gán m = 15.
- Put phần dư m chia cho 2 (m % 2) vào stack.
- Gán m = m / 2.
- Nếu m > 0 quay lại bước 2.
- Đảo ngược lại stack ta được số cần tính.
Các hệ số khác chuyển đổi tương tự.
Ví dụ chuyển đối hệ cơ số 10 sang hệ cơ số B
Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Chúng ta tạo ra một chương trình như sau để chuyển đổi hệ cơ số trong C#:
using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class HeCoSo { const char CHAR_55 = (char)55; const char CHAR_48 = (char)48; /** * chuyen doi so nguyen n sang he co so b * * @author viettuts.vn * @param n: so nguyen * @param b: he co so */ static int convertNumber(int n, int b) { if (n < 0 || b < 2 || b > 16) { Console.Write("He co so hoac gia tri chuyen doi khong hop le!"); return 0; } int i; char[] arr = new char[20]; int count = 0; int m; int remainder = n; while (remainder > 0) { if (b > 10) { m = remainder % b; if (m >= 10) { arr[count] = (char)(m + CHAR_55); count++; } else { arr[count] = (char)(m + CHAR_48); count++; } } else { arr[count] = (char)((remainder % b) + CHAR_48); count++; } remainder = remainder / b; } // hien thi he co so for (i = count - 1; i >= 0; i--) { Console.Write(arr[i]); } return 1; } /** * Ham main */ static void Main(string[] args) { int n = 12; Console.Write("So {0} trong he co so 2 = ", n); convertNumber(n, 2); Console.Write("\nSo {0} trong he co so 16 = ", n); convertNumber(n, 16); } } }
Kết quả:
So 12 trong he co so 2 = 1100 So 12 trong he co so 16 = C
Chuyển đối hệ cơ số B sang hệ cơ số 10
Trong ảnh dưới đây là ví dụ về chuyển đổi hệ cơ số 2 sang hệ cơ số 10.
Các hệ cơ số khác tương tự.
Sử dụng phương thức có sẵn Convert.ToString()
Bạn cũng có thể sử dụng phương thức Convert.ToString() trong C# để chuyển đổi hệ cơ số 10 sang hệ cơ số bất kỳ.
Cú pháp của hàm Convert.ToString():
public static string ToString(int value, int toBase)
Trong đó:
- value: là số nguyên hệ cơ số 10 cần được chuyển đổi.
- toBase: chỉ định ra cho máy tính biết hệ cơ số mà nó cần chuyển đổi đối với con số value. Giá trị toBase chỉ chấp nhận các giá trị 2, 8, 10 hoặc 16.
Ví dụ sử dụng phương thức Convert.ToString() để chuyển đổi hệ cơ số 10 sang hệ cơ số 2, 8, 10 và 16.
using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class HeCoSo2 { /** * Ham main */ static void Main(string[] args) { int value = 12; Console.Write("So {0} trong he co so 2 la: {1}", value, Convert.ToString(value, 2)); Console.Write("\nSo {0} trong he co so 8 la: {1}", value, Convert.ToString(value, 8)); Console.Write("\nSo {0} trong he co so 10 la: {1}", value, Convert.ToString(value, 10)); Console.Write("\nSo {0} trong he co so 16 la: {1}", value, Convert.ToString(value, 16)); } } }
Kết quả:
So 12 trong he co so 2 la: 1100 So 12 trong he co so 8 la: 14 So 12 trong he co so 10 la: 12 So 12 trong he co so 16 la: c