Используя только структуру и указатели вывести число по битам - 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;
}
Объяснение кода листинга программы
В этом коде:
- Объявлена структура s, которая содержит восемь битовых полей (от b0 до b7) без значений.
- В функции main() объявлена переменная типа int b и переменная типа long a, которой присваивается значение 7.
- Выделена память под указатель t на один элемент массива структур s, используя оператор reinterpret_cast.
- Указатель t указывает на первый элемент массива структур s, который является полем b0 структуры s, которому присвоено значение 7.
- Используя указатель t, выводятся значения полей b0, b1, b2, b3, b4, b5, b6 и b7 структуры s.
- Переменной b присваивается значение размера структуры s.
- Выводится значение переменной b.
- Используя функцию getch(), программа переходит в режим ожидания нажатия клавиши.
- Возвращается 0, что означает успешный конец работы программы. Список не содержит более 20 элементов, поэтому можно пронумеровать их от 1 до 20.
- Объявление структуры s.
- Объявление переменной типа int b.
- Объявление переменной типа long a.
- Выделение памяти под указатель t на один элемент массива структур s.
- Указатель t указывает на первый элемент массива структур s.
- Вывод значения поля b0 структуры s.
- Вывод значения поля b1 структуры s.
- Вывод значения поля b2 структуры s.
- Вывод значения поля b3 структуры s.
- Вывод значения поля b4 структуры s.
- Вывод значения поля b5 структуры s.
- Вывод значения поля b6 структуры s.
- Вывод значения поля b7 структуры s.
- Переменной b присваивается значение размера структуры s.
- Вывод значения переменной b.
- Вызов функции getch().
- Возвращение 0.