Перевод из десятичной в двоичную СС - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Накалякал вот такое вот дело:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int d, x;
  6. printf ("Enter dec value:");
  7. scanf("%d", &d);
  8. x = 128;
  9. for(int i = 1; i <= 8; i++)
  10. {
  11. if(d >= x)
  12. {
  13. printf("1");
  14. d -= x;
  15. }
  16. else
  17. printf("0");
  18. x /= 2;
  19. }
  20. system("pause");
  21. return 0;
  22. }
Оно преобразовывает десятичное в двоичное, выводит его но я хочу чтоб над ним дальше можно было проводить операции, то бишь записать полученное значение, допустим в знаковую переменную. Помогите, кому не сложно.

Решение задачи: «Перевод из десятичной в двоичную СС»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. //-----------------------------------------------------------------------------
  4. void DecToBin(int dec, char* bin)
  5. {
  6.    static const size_t CBits = sizeof(dec) * 8;
  7.  
  8.    int i;
  9.    for (i = CBits - 1; i >= 0; --i)
  10.    {
  11.       bin[i] = dec & 1;
  12.       dec >>= 1;
  13.    }
  14. }
  15. //-----------------------------------------------------------------------------
  16. void PrintBin(char* bin, size_t length)
  17. {
  18.    size_t i;
  19.  
  20.    for (i = 0; (i < length) && (bin[i] == 0); ++i) { ; }
  21.  
  22.    for (; (i < length); ++i)
  23.    {
  24.       printf("%c", bin[i] ? '1' : '0');
  25.    }
  26. }
  27. //-----------------------------------------------------------------------------
  28. int main()
  29. {
  30.    int digit;
  31.    printf("dec: ");
  32.    scanf("%d", &digit);
  33.  
  34.    char bin[32] = { 0 };
  35.    DecToBin(digit, bin);
  36.  
  37.    printf("bin: ");
  38.    PrintBin(bin, sizeof(bin));
  39.  
  40.    return 0;
  41. }

Объяснение кода листинга программы

  1. include — подключаем стандартную библиотеку ввода/вывода
  2. *void DecToBin(int dec, char bin)** — функция перевода десятичного числа в двоичное
  3. *static const size_t CBits = sizeof(dec) 8;** — определяем количество бит в числе типа int (обычно 4 байта, т.е. 32 бита)
  4. int i; — объявляем переменную для цикла
  5. for (i = CBits - 1; i >= 0; --i) — цикл по всем битам числа, начиная с старшего (от 31 до 0)
  6. bin[i] = dec & 1; — записываем в массив bin значение очередного бита числа dec (используем операцию AND с 1)
  7. dec >>= 1; — сдвигаем число dec вправо на 1 бит (для получения следующего младшего бита)
  8. *void PrintBin(char bin, size_t length)** — функция вывода двоичного числа
  9. size_t i; — объявляем переменную для цикла
  10. for (i = 0; (i < length) && (bin[i] == 0); ++i) { ; } — пропуск нулевых битов при выводе
  11. for (; (i < length); ++i) — цикл по всем битам числа, начиная с первого (от 0 до length-1)
  12. printf(%c, bin[i] ? '1' : '0'); — вывод значения каждого бита в виде '1' или '0' (используется тернарный оператор)
  13. int main() — функция, с которой начинается выполнение любой программы
  14. printf(dec:); — вывод приглашения для ввода десятичного числа
  15. scanf(%d, &digit); — ввод десятичного числа с клавиатуры
  16. char bin[32] = { 0 }; — объявление массива для хранения двоичного числа
  17. DecToBin(digit, bin); — вызов функции перевода десятичного числа в двоичное
  18. printf(bin:); — вывод приглашения для вывода двоичного числа
  19. PrintBin(bin, sizeof(bin)); — вызов функции вывода двоичного числа
  20. return 0; — завершение работы программы (возврат 0)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы