Перевод из десятичной в двоичную СС - 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;
- }
Объяснение кода листинга программы
- include
— подключаем стандартную библиотеку ввода/вывода - *void DecToBin(int dec, char bin)** — функция перевода десятичного числа в двоичное
- *static const size_t CBits = sizeof(dec) 8;** — определяем количество бит в числе типа int (обычно 4 байта, т.е. 32 бита)
- int i; — объявляем переменную для цикла
- for (i = CBits - 1; i >= 0; --i) — цикл по всем битам числа, начиная с старшего (от 31 до 0)
- bin[i] = dec & 1; — записываем в массив bin значение очередного бита числа dec (используем операцию AND с 1)
- 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) — цикл по всем битам числа, начиная с первого (от 0 до length-1)
- printf(
%c
, bin[i] ? '1' : '0'); — вывод значения каждого бита в виде '1' или '0' (используется тернарный оператор) - int main() — функция, с которой начинается выполнение любой программы
- printf(
dec:
); — вывод приглашения для ввода десятичного числа - scanf(
%d
, &digit); — ввод десятичного числа с клавиатуры - char bin[32] = { 0 }; — объявление массива для хранения двоичного числа
- DecToBin(digit, bin); — вызов функции перевода десятичного числа в двоичное
- printf(
bin:
); — вывод приглашения для вывода двоичного числа - PrintBin(bin, sizeof(bin)); — вызов функции вывода двоичного числа
- return 0; — завершение работы программы (возврат 0)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д