C语言十进制转bcd码
时间: 2024-09-24 17:21:21 浏览: 56
C语言中将十进制数转换为BCD(二进制补码表示的十进制)码通常涉及到位操作。BCD码是一种用来表示十进制数字的编码方式,每个十进制数用4位二进制表示,可以避免溢出风险。下面是一个简单的步骤:
1. **拆分十进制数**: 将输入的十进制数依次除以100,得到商和余数,这一步相当于将十进制数按千、百、十、个位拆分。
2. **将余数转换为二进制**: 对于每次得到的余数,转换为四位二进制形式。如果余数小于5,直接写出;如果大于等于5,则加上6(例如10变成110),然后右移一位。
3. **合并BCD码**: 把每一位的二进制结果按照高位优先的方式拼接起来,就得到了对应的BCD码。
下面是一个简单的函数示例,假设`input`是需要转换的十进制数:
```c
#include <stdio.h>
// 十进制转BCD码
void decimalToBcd(unsigned int input) {
unsigned int bcd[4], i = 0;
while (input > 0) {
bcd[i++] = input % 10; // 取余作为BCD的最低两位
if (bcd[i - 1] >= 5) { // 如果余数大于等于5,加6并右移一位
bcd[i - 1]++;
if (bcd[i - 1] > 9) {
bcd[i - 1] -= 10;
bcd[i] = 1; // 标记有进位
}
} else {
bcd[i] = 0; // 没有进位标记为0
}
input /= 10; // 跳到下一位
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", bcd[j]); // 从低位到高位打印BCD码
}
}
int main() {
unsigned int num = 1234;
decimalToBcd(num);
return 0;
}
```
阅读全文