Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/54: Рейтинг темы: голосов - 54, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 10

Выдать побитовое представление используя union и битовые поля.

08.03.2011, 11:37. Показов 10706. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию для вывода на экран битового представления в ЭВМ числа . Знаю вот такой способ, но он один, а надо двумя (используя битовые поля и объединение)

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
void binary (unsigned char ch) 
{
    union 
    {
        unsigned char ss;              
        struct 
        {
            unsigned a0:1;
            unsigned a1:1;
            unsigned a2:1;
            unsigned a3:1;
            unsigned a4:1;
            unsigned a5:1;
            unsigned a6:1;
            unsigned a7:1;
        } byte;
    } cod;
 
    cod.ss = ch;      //занесение в объединение значения параметра
    cout <<"  bity =  ";
                                        
                                         // вывод бит
    cout <<" "<<cod.byte.a7<<" "<<cod.byte.a6  
        <<" "<<cod.byte.a5<<" "<<cod.byte.a4 
        <<" "<<cod.byte.a3<<" "<<cod.byte.a2 
        <<" "<<cod.byte.a1<<" "<<cod.byte.a0<<endl;
}
Было бы интересно узнать решение этой программы
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2011, 11:37
Ответы с готовыми решениями:

Используя битовые операции, вывести на экран восьмиричное представление беззнакового короткогоцелого
Знаю такая задача уже была на форуме в таком виде, но возможно ли её написать проще на уровне начинающего? #include &quot;stdafx.h&quot; ...

Побитовое представление числа
Добрый вечер, подскажите, пожалуйста, каким образом можно сформировать число из нужных мне битов, скажем, есть 4 бита (0, 0, 0, 1), далее...

Побитовое представление числа.
Всем привет, подскажите пожалуйста, нужно: Написать программу, которая принимает с клавиатуры число x, имеющее тип unsigned char и...

8
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.03.2011, 12:57
Дык этож и есть "используя битовые поля и объединение".
0
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 10
08.03.2011, 13:02  [ТС]
Выполнить задание двумя способами: через объединение (union) и через структуру с битовыми полями.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
08.03.2011, 13:10
Так что-ли?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdlib.h>
#include <stdio.h>
 
struct Byte {
  unsigned a0:1;
  unsigned a1:1;
  unsigned a2:1;
  unsigned a3:1;
  unsigned a4:1;
  unsigned a5:1;
  unsigned a6:1;
  unsigned a7:1;
};
 
int main() {
  struct Byte byte;
  *(unsigned char*)&byte = 0x55;
 
  printf("%d%d%d%d%d%d%d%d\n", byte.a7, byte.a6, byte.a5, byte.a4,
                               byte.a3, byte.a2, byte.a1, byte.a0);
 
  return 0;
}
0
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 10
08.03.2011, 13:39  [ТС]
Цитата Сообщение от lemegeton Посмотреть сообщение
*(unsigned char*)&byte = 0x55;
Это, я так понимаю, Си. А как реализовать на С++? 0х55 задать через ссылку на требуемое число?
0
 Аватар для igorrr37
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,720
Записей в блоге: 15
08.03.2011, 13:58
Цитата Сообщение от ArniDexian Посмотреть сообщение
А как реализовать на С++?
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
 
int main(){
    struct{
        unsigned a0:1, a1:1, a2:1, a3:1, a4:1, a5:1, a6:1, a7:1;
    }n;
    *reinterpret_cast<unsigned*>(&n)=10;
    std::cout<<n.a7<<n.a6<<n.a5<<n.a4<<n.a3<<n.a2<<n.a1<<n.a0<<"\n";
}
0
1 / 1 / 0
Регистрация: 28.11.2010
Сообщений: 10
08.03.2011, 14:40  [ТС]
Спасибо всем за внимание, доделал своим способом, вот полностью рабочая программа!

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream> 
using namespace std;
 
void BitStruct (unsigned long var) //С использованием битовых полей
{
    union 
    {
        unsigned long varULong;              
        struct 
        {
            unsigned a0:1;
            unsigned a1:1;
            unsigned a2:1;
            unsigned a3:1;
            unsigned a4:1;
            unsigned a5:1;
            unsigned a6:1;
            unsigned a7:1;
            unsigned a8:1;
            unsigned a9:1;
            unsigned a10:1;
            unsigned a11:1;
            unsigned a12:1;
            unsigned a13:1;
            unsigned a14:1;
            unsigned a15:1;
            unsigned a16:1;
            unsigned a17:1;
            unsigned a18:1;
            unsigned a19:1;
            unsigned a20:1;
            unsigned a21:1;
            unsigned a22:1;
            unsigned a23:1;
            unsigned a24:1;
            unsigned a25:1;
            unsigned a26:1;
            unsigned a27:1;
            unsigned a28:1;
            unsigned a29:1;
            unsigned a30:1;
            unsigned a31:1;
        } byte;
    } cod;
 
    cod.varULong = var;
    cout <<"  bity:  ";
                                                                                
    cout <<" "<<cod.byte.a31<<" "<<cod.byte.a30  <<" "<<cod.byte.a29<<" "<<cod.byte.a28<<" "<<cod.byte.a27<<" "<<cod.byte.a26<<" "<<cod.byte.a25<<" "<<cod.byte.a24
        <<" "<<cod.byte.a23<<" "<<cod.byte.a22  <<" "<<cod.byte.a21<<" "<<cod.byte.a20<<" "<<cod.byte.a19<<" "<<cod.byte.a18<<" "<<cod.byte.a17<<" "<<cod.byte.a16
        <<" "<<cod.byte.a15<<" "<<cod.byte.a14  <<" "<<cod.byte.a13<<" "<<cod.byte.a12<<" "<<cod.byte.a11<<" "<<cod.byte.a10<<" "<<cod.byte.a9<<" "<<cod.byte.a8
        <<" "<<cod.byte.a7<<" "<<cod.byte.a6  <<" "<<cod.byte.a5<<" "<<cod.byte.a4<<" "<<cod.byte.a3<<" "<<cod.byte.a2<<" "<<cod.byte.a1<<" "<<cod.byte.a0<<endl;
}
 
void Union (unsigned long var) //С использованием только union
{           
    union 
    {
        unsigned long varULong;  //varULong - переменная требуемого типа
        long bytes;
    } byte;
    byte.varULong = var;
    cout <<"  bity:  ";
        for (int i=31; i>=0; i--)                                                  
        cout<<" "<<((byte.bytes >> i) & 1);
    cout<<endl;
}
 
 
void main()                
{
    unsigned x;
    cin>>x;                  
    if (x >= 0)
    {
        BitStruct(x);           // битовое представление числа
        Union(x);
    }
}
PS: Данная функция используется для побитового представления типов float, double (т.е. для чисел с плавающей запятой).
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.03.2011, 05:41
хранение битовых полей внутри еденицы памяти (слева-направо или справа-налево) не определено
0
alek7ey09
12.01.2013, 11:42
Подскажите, а как можно в данной программе использовать динамический массив?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2013, 11:42
Помогаю со студенческими работами здесь

Битовые операции, битовые поля.
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые поля. Поля без типа и имени
Вчера сделал очень интересную и болезненную ошибку (с точки зрения времени, так как искал я ее долго)... представьте структуру (битовое...

Используя битовые операции, вывести на экран восьмеричное представление беззнакового короткого целого
Здраствуйте.Всю жизнь программировал на Паскале и вдруг си...помогите пожалуйста с заданиями,желательно с объяснением,ибо чайник полный.. ...

Используя битовые операции, вывести на экран двоичное представление беззнакового короткого целого
#include &lt;stdio.h&gt; int main(int argc, char* argv) { unsigned short int num; int i, count; printf(&quot;Enter the...

Побитовое чтение из поля SqLite
Пробовал так вот const string databaseName = @&quot;C:\MyProj\base.db&quot;; SQLiteConnection connection = new...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru