Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

Viết chương trình C# để chuyển đổi một số trong hệ thập phân thành số tương đương trong hệ thập lục phân (hệ Hexadecimal).

Các bài tập chuyển đổi hệ cơ số là các bài tập khá phổ biến. Các bài tập C# này minh họa giúp bạn cách sử dụng vòng lặp trong C#.

Chương trình C#

Dưới đây là chương trình C# để giải bài tập chuyển đổi thập phân thành thập lục phân trong C#:

Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

using System;

namespace VietJackCsharp
{
    class TestCsharp
    {
        public static void Main()
        {

            int decn, q, dn = 0, m, l;
            int tmp;
            int s;

            Console.Write("\n");
            Console.Write("Chuyen doi thap phan thanh thap luc phan trong C#:\n");
            Console.Write("--------------------------------------------------");
            Console.Write("\n\n");

            Console.Write("Nhap mot so thap phan: ");
            decn = Convert.ToInt32(Console.ReadLine());
            q = decn;
            for (l = q; l > 0; l = l / 16)
            {
                tmp = l % 16;
                if (tmp < 10)
                    tmp = tmp + 48;
                else
                    tmp = tmp + 55;
                dn = dn * 100 + tmp;
            }
            Console.Write("\nSo thap luc phan (so Hexa) tuong duong la: ");
            for (m = dn; m > 0; m = m / 100)
            {
                s = m % 100;
                Console.Write("{0}", (char)s);
            }
            Console.Write("\n\n"); 

            Console.ReadKey();
        } 
    }
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Kết quả chương trình C#

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Để hiển thị số hệ 10 sang các hệ khác, thông thường chúng ta nghĩ đến cách đổi chúng ra các hệ kia bằng thuật toán. Nếu muốn vậy bạn có thể tìm thêm trên Google đã có nhiều bài viết về các thuật toán đó rồi, ở đây mình nêu một số cách mà chúng ta không cần dùng thuật toán mà có thể hiển thị ngay.

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:

  1. Gán m = 15.
  2. Put phần dư m chia cho 2 (m % 2) vào stack.
  3. Gán m = m / 2.
  4. Nếu m > 0 quay lại bước 2.
  5. Đảo ngược lại stack ta được số cần tính.
Viết chương trình đổi một số nguyên hệ 10 sang hệ 16

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.

Trong chương trình dưới đây, 2 hàm convertToBaseRec và convertToBase cùng thực hiên chức năng chuyển đổi cơ số nhưng dùng 2 phương pháp khác nhau: Lặp tuần tự (lệnh while) và Đệ quy.

void convertToBase(int, int);

void convertToBaseRec(int, int);

     printf("Nhap so muon chuyen doi : ");

     // Chỉ chấp nhận hệ cơ số từ 2 (bit) tới 16 (HEX)

     //Theo phương pháp lặp while

      printf("\n Ket qua chuyen doi (su dung ham tuan tu) : ");

     convertToBase(base,number);

     //Theo phương pháp đệ quy

     printf("\n Ket qua chuyen doi (su dung ham de quy) : ");

     convertToBaseRec(base,number);

void convertToBase(int base, int number)

     //Mảng chứa các chữ số của hệ 16  [hex]

     char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

          output[i++] = digits[number%base];    

void convertToBaseRec(int base, int number)

     char digits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

     //Gọi đệ quy hàm convertToBaseRec()

     convertToBaseRec(base,number/base);

     //Xuất kết quả ra màn hình

     printf("%c",digits[number%base]);