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