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

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

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

Накалякал вот такое вот дело:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int d, x;
printf ("Enter dec value:");
scanf("%d", &d);
x = 128;
for(int i = 1; i <= 8; i++)
{
if(d >= x)
{
printf("1");
d -= x;
}
else
printf("0");
 
x /= 2; 
}
 
system("pause");
return 0;
}
Оно преобразовывает десятичное в двоичное, выводит его но я хочу чтоб над ним дальше можно было проводить операции, то бишь записать полученное значение, допустим в знаковую переменную. Помогите, кому не сложно.

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

textual
Листинг программы
#include <stdio.h>
 
//-----------------------------------------------------------------------------
void DecToBin(int dec, char* bin)
{
   static const size_t CBits = sizeof(dec) * 8;
 
   int i;
   for (i = CBits - 1; i >= 0; --i)
   {
      bin[i] = dec & 1;
      dec >>= 1;
   }
}
//-----------------------------------------------------------------------------
void PrintBin(char* bin, size_t length)
{
   size_t i;
 
   for (i = 0; (i < length) && (bin[i] == 0); ++i) { ; }
 
   for (; (i < length); ++i)
   {
      printf("%c", bin[i] ? '1' : '0');
   }
}
//-----------------------------------------------------------------------------
int main()
{
   int digit;
   printf("dec: ");
   scanf("%d", &digit);
 
   char bin[32] = { 0 };
   DecToBin(digit, bin);
 
   printf("bin: ");
   PrintBin(bin, sizeof(bin));
 
   return 0;
}

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

  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
Похожие ответы