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

Битовые поля - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный массив. Перемещение строк местами. http://www.cyberforum.ru/cpp-beginners/thread187627.html
Помогите разобраться пожалуйста, что не так? Задание выглядит так Составить программу, которая получает матрицу В размером m *n и два числа i<m и j<m. Если матрица в каждой четной строке имеет положительную сумму элементов, то программа формирует новую матрицу, меняя местами элементы строки с номером i на элементы строки с номером j исходной матрицы В #include <iostream> using...
C++ Помогите пожалоста как найти два максимальних елемента в массиве с помощью асемблеровских вставок!!!!!! http://www.cyberforum.ru/cpp-beginners/thread187625.html
C++ Определение максимального из трёх целых чисел
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Вот такая ошибка вылазяет при компиляции в VS 2010 пример списан из книжки Почему ошибка ? (Пс попробовал в DEV-C++ старый 2005 года вроде IDE там компилируется нормально) // Main.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include...
ввести массив C++
здравствуйте! Чтото я совсем запутался) Это очень глупо, но помогите мне плиз ввести двумерный динамический массив с N(задаёт пользователь) размерностью.
C++ Как можно упростить программу?(или подкорректировать) http://www.cyberforum.ru/cpp-beginners/thread187605.html
(ссылка на задание) Вот мое решение : Код: #include <stdio.h> #include <conio.h> #include <iostream.h> #include <iomanip.h>
C++ Определить результаты спортсменов, занявших первое и второе места 3. В двух массивах записаны результаты 20 игр двух футбольных команд (если игра окончилась выигрышем данной команды, то записано число 2, проигрышем— 0, если игра окончилась вничью— 1). Организовать заполнение массивов с клавиатуры и проверку корректности ввода значений. На основе имеющихся данных определить: а) суммарное количество баллов, которое заработала каждая команда: б) количество... подробнее

Показать сообщение отдельно
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 19:45     Битовые поля
Ну, есть два варианта, первый с битовыми полями (как я понимаю тебе он нужен):
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
#include <stdio.h>
 
typedef unsigned char uchar;
 
typedef union
{
    uchar value;
 
    struct
    {
        uchar b1 : 1;
        uchar b2 : 1;
        uchar b3 : 1;
        uchar b4 : 1;
        uchar b5 : 1;
        uchar b6 : 1;
        uchar b7 : 1;
        uchar b8 : 1;
    };
} Byte;
 
int main()
{
    Byte byte;
 
    byte.value = 0x00;
    printf("byte = 0x%02X\n", byte.value);
 
    byte.b3 = 1;
    printf("byte = 0x%02X\n", byte.value);
 
    byte.b7 = !byte.b7;
    printf("byte = 0x%02X\n", byte.value);
 
    byte.b7 = !byte.b7;
    printf("byte = 0x%02X\n", byte.value);
 
    return 0;
}
И второй более оптимальный вариант:
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
#include <stdio.h>
 
#define BIT1 0x01
#define BIT2 0x02
#define BIT3 0x04
#define BIT4 0x08
#define BIT5 0x10
#define BIT6 0x20
#define BIT7 0x40
#define BIT8 0x80
 
typedef unsigned char byte;
 
int main()
{
    byte value = 0x00;
    printf("byte = 0x%02X\n", value);
 
    value |= BIT3;
    printf("byte = 0x%02X\n", value);
 
    value ^= BIT7;
    printf("byte = 0x%02X\n", value);
 
    value ^= BIT7;
    printf("byte = 0x%02X\n", value);
 
    return 0;
}
Добавлено через 4 минуты
Кстати, насчет битовых полей, вспомнил одну штуку - в MSVC битовые поля для разных типов данных не сжимаются, в отличии от gcc, поэтому если хочешь чтобы несколько подряд идущих битовых полей занимали непрерывный участок памяти - лучше всегда использовать один тип данных, как в первом примере выше.
 
Текущее время: 00:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru