Преобразовать десятичное число в двоичное - 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 для приостановки выполнения программы до нажатия клавиши
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д