Преобразовать десятичное число в двоичное - C (СИ)

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

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

Vообщем немного не стандартная задача. Мне нужно преобразовать десятичное число в двоичное. И представить это двоичное число в 16-битной сетке, т.е. число 3 это 000000000000011.Затем нужно заменить последние значение на первые, т.е. 00000000000000011=>1100000000000000. И это новое число опять перевести в десятичное. Т.е. 1100000000000000=>-32768. Я не знаю как проделать последнюю операцию. Вот то что я уже сделал:
#include<stdio.h>
#include<conio.h>
 
void main(void)
{
clrscr();
 
int j,k;
long m[16],i;
 
scanf("%ld",&i);
printf("i=%ld\n",i);
for(j=15;j>=0;j--)
    {
    k=(i>>j)&1;
    printf("%d",k);
    }
printf("\n");
for(j=0;j<16;j++)
    {
    m[j]=(i>>j)&1;
    printf("%ld",m[j]);
    }
printf("\ni=%ld",m[j]);
 
getch();
}
Я знаю что 24 строка не правильная, вот в чем и загвоздка. Не судите строго я плохо шарю в этом, поэтому если знаете решение обьясните доступно. Спасибо заранее.

Решение задачи: «Преобразовать десятичное число в двоичное»

textual
Листинг программы
#include<stdio.h>
#include<conio.h>
 
void main()
{
 
   int i, j, k;
   int m[16];
 
   clrscr();
 
   scanf("%d", &i);
   printf("i=%d\n", i);
 
   for(j = 15; j >= 0; j--)
   {
      k = (i>>j)&1;
      printf("%d", k);
   }
   printf("\n");
   for(j = 0; j < 16; j++)
   {
      m[j] = (i>>j)&1;
      printf("%ld", m[j]);
   }
 
   if (m[0] == 0)
      i = 0;
   else
      i = -1;
   for (j = 1; j < 16; j++)
   {
      i <<= 1;
      i |= m[j];
   }
   printf("\ni=%d", i);
 
   getch();
}

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

Вывод списка элементов кода:

  1. Объявлены три переменные типа int - i, j, k
  2. Переменная i инициализируется вводом пользователя с помощью функции scanf
  3. В цикле for с переменной j от 15 до 0 выполняется следующие действия:
    • переменная k получает значение (i>>j)&1
    • значение переменной k выводится на экран
  4. В цикле for с переменной j от 0 до 15 выполняется следующие действия:
    • элемент массива m[j] инициализируется значением (i>>j)&1
    • значение элемента массива m[j] выводится на экран
  5. Проверяется условие if (m[0] == 0), и если оно истинно, то i = 0, иначе i = -1
  6. В цикле for с переменной j от 1 до 16 выполняется следующие действия:
    • переменная i сдвигается вправо на 1 бит (i <<= 1)
    • к переменной i добавляется значение элемента массива m[j] (i |= m[j])
  7. Выводится значение переменной i
  8. Вызывается функция getch для приостановки выполнения программы до нажатия клавиши

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы