CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN ngôn ngữ C: Giải thích chi tiết về trao đổi mã thập phân và mã BCD được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Gần đây, tôi đã viết cấu hình ngày và giờ cho một máy vi tính RTC đơn chip. Tôi cần thực hiện trao đổi mã thập phân và mã BCD. Tôi sẽ chia sẻ bản Demo với tất cả bạn bè của mình:

BCD đề cập đến việc mã hóa số thập phân bằng hệ nhị phân, tức là sử dụng 4 chữ số nhị phân để biểu thị số thập phân, do đó 4 chữ số nhị phân biểu thị số thập phân lớn nhất 9 (1001).
Mã BCD bốn chữ số không thể biểu thị số thập phân có hai chữ số nên khi số đó lớn hơn chín, chúng ta cần sử dụng mã BCD tám chữ số để biểu thị số đó. Đối với các vị trí cao, bạn chỉ cần thăng lên một mỗi chín.
Hệ thập phân dựa trên hệ thập phân và hệ thập lục phân dựa trên hệ thập lục phân. Mỗi số có chênh lệch giữa chúng là 6, vì vậy để chuyển một số thập phân thành mã BCD, trước tiên bạn phải tính số chữ số có nhiều chữ số.
Khi cộng hai mã BCD, nếu tổng bằng hoặc nhỏ hơn 1001 (tức là số thập phân 9) thì không cần hiệu chỉnh.

Nếu tổng nằm trong khoảng từ 1010 đến 1111 (tức là số thập lục phân 0AH~0FH), bạn cần thêm 6 để sửa.

Ví dụ: số thập phân 99 được mang 99/10=9 lần và mỗi lần mang khác với số thập lục phân mang 6, do đó tổng chênh lệch là 9×6=54, nghĩa là mã BCD là: 99+54=153 (Cơ sở hex: 0X99). Nguyên tắc tương tự cũng áp dụng cho việc chuyển đổi mã BCD thành mã thập phân.
。
1. Phiên bản phức tạp
Chuyển đổi mã thập phân sang mã BCD, mã như sau:
int decimal_bcd_code(int decimal){ int sum = 0; //sum của mã BCD for (int i = 0; decimal > 0; i++) { sum |= ((decimal % 10 ) << ( 4*i)); decimal /= 10; } return sum;}
Chuyển mã BCD sang thập phân, mã như sau:
int bcd_decimal_code( int bcd){ int sum = 0, c = 1; // tổng trả về số thập phân, c được nhân đôi 10 lần mỗi lần for(int i = 1; bcd > 0; i++) { if( i >= 2) { c*=10; } tổng += (bcd%16) * c; bcd /= 16; Chia cho 16 cũng giống như chia thập phân cho 10. Di chuyển dấu thập phân sang trái một lần và lấy số dư 16 thì trả về tổng;}
。
2. Phiên bản đơn giản
Chuyển đổi mã thập phân sang mã BCD, mã như sau:
int bcd_decimal_code( int bcd){ trả về (bcd + (bcd/10) * 6);}
Chuyển mã BCD sang thập phân, mã như sau:
int decimal_bcd_code(int thập phân){ trả về (thập phân - (thập phân>>4) * 6);}
Tài liệu tham khảo:
1. Thuật toán chuyển đổi mã thập phân và mã BCD.
2. Công cụ trực tuyến chuyển đổi số thập phân sang mã BCD.
Tóm tắt
Bài viết này kết thúc tại đây, tôi hy vọng nó có thể hữu ích cho bạn và tôi hy vọng bạn có thể chú ý hơn đến nội dung của tôi! .
Liên kết gốc: https://blog.csdn.net/m0_38106923/article/details/120000157.
Cuối cùng, bài viết về ngôn ngữ C: hệ thập phân và giải thích chi tiết về trao đổi mã BCD kết thúc tại đây. Nếu bạn muốn biết thêm về ngôn ngữ C: hệ thập phân và giải thích chi tiết về trao đổi mã BCD, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt qua các bài liên quan. Bài viết, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!