Инициализация переменных двоичным числом - C (СИ)

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

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

Возник такой вопрос.
int a = 10; int b = 010; int c = 0x10;
Как известно: a - десятичное число, b - восьмеричное, c - шестнадцатиричное. А каким образом можно инициализировать переменную двоичным числом и числом в какой-нибудь иной системе счисления?

Решение задачи: «Инициализация переменных двоичным числом»

textual
Листинг программы
template<unsigned long N>
struct Byte {
  enum{value = (N % 10) | (2 * Byte<N/10 >::value)};
};
 
template <>
struct Byte<0> {
    enum {value = 0};
};
 
template <unsigned long Byte1, unsigned long Byte2>
struct Word {
    enum{value = (Byte<Byte1>::value<<8) | Byte<Byte2>::value};
};
 
template<unsigned long Byte1, unsigned long Byte2, unsigned long Byte3, unsigned long Byte4>
struct Dword {
    enum{value = (Word<Byte1, Byte2>::value <<16) | Word<Byte3, Byte4>::value};
};
 
void Foo()  // Пример использования
{
    std::cout << Word<1010101, 10101010>::value << std::endl;  // Начинать число с ноликов нельзя
}

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

Код представляет собой шаблонную структуру для работы с двоичными числами.

  1. Byte<N> - это шаблонная структура, которая представляет собой двоичное число, в зависимости от значения N. Значение двоичного числа определяется в enum, где используются операции побитового И (|) и сдвига (<<).
  2. Word<Byte1, Byte2> - это шаблонная структура, которая представляет собой слово (16-битное число), состоящее из двух байтов. Значение слова определяется в enum, где используется операция побитового И (<<) и операция объединения (|).
  3. Dword<Byte1, Byte2, Byte3, Byte4> - это шаблонная структура, которая представляет собой двойное слово (32-битное число), состоящее из четырех слов. Значение двойного слова определяется в enum, где используется операция побитового И (<<) и операция объединения (|).
  4. В функции Foo() используется структура Word<1010101, 10101010>::value, чтобы вывести на экран двоичное представление числа. Это число будет выводиться в двоичной системе счисления, начиная с единицы, потому что двоичное число начинается с единицы, а не с нуля.

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


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

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

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