Cách chuyển mã BCD sang DEC

Chào mọi người!
Nhờ mọi người giúp mình ở đoạn code nhỏ sau:

   int dec2bcd(byte num)
    {
            return ((num/10 * 16) + (num % 10));
    }

hàm return sẽ trả về giá trị của bcd2dec phải không? và mình chưa hiểu phép toán này, trong bài mình đọc có ví dụ: số 23 khi chuyển sang BCD sẽ có dạng 0b00100011 (0x23).
tính toán là: 23/10*16+23%10=39.8???
Cám ơn mọi người!

Thứ nhất return không phải là một hàm mà một lệnh.
Thứ hai là mình thấy tên hàm là dec2bcd (mình hiểu là chuyển số thập phân sang số nhị phân - tiêu đề câu hỏi thì lại là Cách chuyển mã BCD sang DEC) nhưng những gì bạn đang đề cập có vẻ như là chuyển số thập phân sang số hexa.
Thứ ba là mình thấy 23/10*16+23%10=39.8??? => không đúng. 23/10 là phép chia nguyên cho kết quả = 2 -> 2 * 16 = 32 -> 32 + 23%10 = 32 + 3. => Cách đổi từ dec2bcd này có vẻ không đúng.

Đoạn code sau đây dùng để đổi từ DEC sang BCD:

#include <iostream>
using namespace std;

void dec2bin(int num)
{
    int arr[64];
    int i = 0, r;
    while(num != 0)
    {
        r = num % 2;
        arr[i++] = r;
        num /= 2;
    }

    for(int j = i - 1; j >= 0; j--)
        cout << arr[j];
}

int main()
{
    int n, arr[64];

    cout << "nhap so thap phan can chuyen: ";
    cin >> n;
    cout << "Ket qua n duoi dang BCD la: 0b";
    dec2bin(n);
    
    return 0;
}
3 Likes

Cách đổi là đúng nhé.
DEC = 23 đổi sang thành BCD = 35 tức là 0010 0011

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?