首页 > 解决方案 > C中数字的位移

问题描述

我必须将 C 中的 Long 类型的数字转换为每个 4 位的 BCD(二进制编码的十进制)数字。我只能使用按位移位和位操作。任何人都可以帮助我实现这一目标。目前我不知道如何达到我的目标。

unsigned long convertBinaryToBCD(unsigned long number){
int number_t_conv = number;
int num_digit = 0;
int count_digits = countNumberDigits(number);

for(num_digit = 0; num_digit <= count_digits; num_digit++){

}
return (((number_t_conv/100) << 8) | ((number_t_conv/10) << 4) | (number_t_conv % 10));
};

标签: cbit-manipulationbitwise-operatorsbit-shift

解决方案


  • longC 程序的内存中将是原始二进制,因此第一步是将其拆分为十进制格式的数字。
  • 这是通过重复将数字除以 10 并获取余数来完成的。数字的 LS 数字始终是n % 10,当你这样做时,n / 10你将十进制数字向右“移动”一位。
  • 一旦你有一个数字数组,将其打印为 BCD 是微不足道的 - 它只是以字符串格式打印一个二进制数。

从编写上面的程序开始,一旦你让它工作,试着用你老师提出的任何人为的废话要求来达到同样的效果。


推荐阅读