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