Форум программистов, компьютерный форум CyberForum.ru

Доступ к нужному биту через битовые поля - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему работает присваивание http://www.cyberforum.ru/cpp-beginners/thread915615.html
Пример из книги. Немогу понять, почему работает присваивание в main.cpp, ведь оператор = не перегружен?!?! //Complex.h #ifndef COMPLEX_H #define COMPLEX_H #include <iostream>
C++ Как организовать цикл здесь? Всем привет! Мне надо посчитать с помощью цикла выражение типа: \sqrt{3 + \sqrt{3 + ...\sqrt{3}}} (n корней, n - с клавиатуры). Я не совсем понимаю, как это запрограммировать. При маленьких n (пусть n = 2) - можно руками: double func(int n) http://www.cyberforum.ru/cpp-beginners/thread915613.html
C++ Бинарные деревья. Напечатать все элементы дерева Т по уровням
Всем привет. Помогите написать программу или хотя бы функцию, условие следующее: Напечатать все элементы дерева Т по уровням, сначала из корня дерева, затем (слева направо) - из вершин, дочерних по отношению к корню и т.д. Заранее спасибо.
C++ Найти корень уравнения методом касательных
Найти корень уравнения методом касательных x^2-1/2=0
C++ Найти корень уравнения методом половинного деления http://www.cyberforum.ru/cpp-beginners/thread915549.html
Найти корень уравнения методом половинного деления x^2-1/2=0
C++ Отделить корень уравнения Отделить корень уравнения x^2-1/2=0 подробнее

Показать сообщение отдельно
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
01.07.2013, 12:38     Доступ к нужному биту через битовые поля
Добрый день! Допустим, есть такой код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <conio.h>
using namespace std;
 
struct byte {
  unsigned a : 1;
  unsigned b : 1;
  unsigned c : 1;
  unsigned d : 1;
  unsigned e : 1;
  unsigned f : 1;
  unsigned g : 1;
  unsigned h : 1;
};
 
union myunion{
  struct byte c;
  int a;
}u;
void display_binary(int a);
 
 
int main()
{
  u.a=15; //Двоичный код   0000 1111
  display_binary(u.a);
  cout<<endl;
  u.c.a=0;
  u.c.h=1;
 
  display_binary(u.a);
   cout<<endl;
    cout<<u.a;
}
 
void display_binary(int a)//Отображает в двоичном коде
{
  int i=0;
  for(unsigned t=128;t>0;t/=2)
  {
    i++;
    if(a & t) cout<<"1";
    else cout<<"0";
    if(i==4) cout<<" ";
  }
}
С помощью этой программы я изучал работу с битовыми полями, т.к. в книге, по которой учусь, эта темя для меня не очень хорошо раскрыта. Как я понял первая переменная, объявленная в битовом поле(в моем случае "a") влияет на младший бит, и чем дальше объявлена переменная, тем к более старшему биту она обращается. Допустим мне надо обратиться к 28 биту. Не объявлять же мне 28 раз с разными именами переменные в битовом поле. Можно было бы объявить переменную размером в 27 бит, а за ней одну переменную в 1 бит. Но вдруг мне понадобится доступ к 19 биту? В общем как поступают в такой ситуации программисты?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru