Битшифтинг номера в C - PullRequest
0 голосов
/ 13 января 2020

Мне нужно преобразовать число типа Long в C в число BCD (двоичное кодированное десятичное число) с 4 битами каждый. Я могу использовать только битовое смещение и битооперации. Может ли кто-нибудь помочь мне достичь этого. На данный момент я не знаю, как достичь своей цели.

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));
};

1 Ответ

4 голосов
/ 13 января 2020
  • long в памяти программы C будет необработанным двоичным кодом, поэтому первым шагом будет разделить его на десятичные цифры.
  • Это делается путем многократного деления числа на 10 и захватывая остаток. LS di git числа всегда n % 10, и когда вы делаете n / 10, вы «сдвигаете» десятичное число на один di git вправо.
  • Как только у вас есть массив цифры, печатать его как BCD - тривиально - это просто печать двоичного числа в строковом формате.

Начните с кодирования вышеуказанной программы и, как только она заработает, попробуйте добиться того же с любой искусственной ерундой требования, которые у вас есть от вашего учителя.

...