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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
01.07.2013, 12:38     Доступ к нужному биту через битовые поля #1
Добрый день! Допустим, есть такой код.
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 биту? В общем как поступают в такой ситуации программисты?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 12:38     Доступ к нужному биту через битовые поля
Посмотрите здесь:

C++ битовые поля!!
Битовые поля C++
C++ Битовые поля
битовые поля C++
Битовые операции, битовые поля. C++
C++ Битовые поля
C++ Битовые поля
C++ Битовые поля

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
01.07.2013, 12:47     Доступ к нужному биту через битовые поля #2
C++
1
2
3
int mask=1<<28;
number|=mask;//установить бит 28 в 1
number&=~mask;//сбросить бит 28 в 0
так? или что тебе надо?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.07.2013, 13:52     Доступ к нужному биту через битовые поля #3
Чтобы не возиться с битами на низком уровне можно использовать std::bitset
Yandex
Объявления
01.07.2013, 13:52     Доступ к нужному биту через битовые поля
Ответ Создать тему
Опции темы

Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru