Используя только структуру и указатели вывести число по битам - C (СИ)

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

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

Вопрос в заголовке. Запрещено использовать логические операции. Хотелось бы с комментариями, никогда не работал с битовым представлением чисел, вот понадобилось..Если трудно написать код, то подскажите литературу где можно почитать. Заранее спасибо!
нужно видимо использовать битовые поля и битовые операции (сдвиг и тп), но я не знаю как это делать..

Решение задачи: «Используя только структуру и указатели вывести число по битам»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
struct s
{
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
};
int main()
{int b;
    long a=7;
    s *t=(s*)&a;
    printf("%d",t->b7);
    printf("%d",t->b6);
    printf("%d",t->b5);
    printf("%d",t->b4);
    printf("%d",t->b3);
    printf("%d",t->b2);
    printf("%d",t->b1);
    printf("%d",t->b0);
    b=sizeof(s);
    printf("\n");
    printf("%d",b);
    getch();
    return 0;
}

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

В этом коде:

  1. Объявлена структура s, которая содержит восемь битовых полей (от b0 до b7) без значений.
  2. В функции main() объявлена переменная типа int b и переменная типа long a, которой присваивается значение 7.
  3. Выделена память под указатель t на один элемент массива структур s, используя оператор reinterpret_cast.
  4. Указатель t указывает на первый элемент массива структур s, который является полем b0 структуры s, которому присвоено значение 7.
  5. Используя указатель t, выводятся значения полей b0, b1, b2, b3, b4, b5, b6 и b7 структуры s.
  6. Переменной b присваивается значение размера структуры s.
  7. Выводится значение переменной b.
  8. Используя функцию getch(), программа переходит в режим ожидания нажатия клавиши.
  9. Возвращается 0, что означает успешный конец работы программы. Список не содержит более 20 элементов, поэтому можно пронумеровать их от 1 до 20.
  10. Объявление структуры s.
  11. Объявление переменной типа int b.
  12. Объявление переменной типа long a.
  13. Выделение памяти под указатель t на один элемент массива структур s.
  14. Указатель t указывает на первый элемент массива структур s.
  15. Вывод значения поля b0 структуры s.
  16. Вывод значения поля b1 структуры s.
  17. Вывод значения поля b2 структуры s.
  18. Вывод значения поля b3 структуры s.
  19. Вывод значения поля b4 структуры s.
  20. Вывод значения поля b5 структуры s.
  21. Вывод значения поля b6 структуры s.
  22. Вывод значения поля b7 структуры s.
  23. Переменной b присваивается значение размера структуры s.
  24. Вывод значения переменной b.
  25. Вызов функции getch().
  26. Возвращение 0.

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


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

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

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