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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
#1

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

01.07.2013, 12:38. Просмотров 1524. Ответов 2
Метки нет (Все метки)

Добрый день! Допустим, есть такой код.
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++
Битовые поля C++
C++ битовые поля!!
C++ Битовые поля
C++ Битовые поля

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru