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

получить 4бит из байта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти телефон сотрудника по фамилии и инициалах (работа с файлами С++) http://www.cyberforum.ru/cpp-beginners/thread821588.html
Задан файл, который содержит номера телефонов сотрудников: указывается фамилия и инициалы, номер телефона. Найти телефон сотрудника по его фамилии и инициалах. Как это сделать?
C++ Найти наибольшее положительное целое число n, для которого выполняется условие: условие: Плиз очень надо=) Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе. Правила форума http://www.cyberforum.ru/cpp-beginners/thread821577.html
C++ Создание англо-русского словаря
Другу задали курсовой создать англо-русский словарь, реализовал начало через std::set, но есть один нюанс в задании написано "обеспечить возможность хранения нескольких вариантов". Если кто делал похожее, или знает как можно записать хэш функцию, поясните, будьте так добры...
C++ bad_alloc - проверка нехватки памяти
Добрый вечер. У меня такая проблема - написал конструктор копирования массива деков символов, и решил посмотреть что произойдет, если не хватит памяти. В результате программа радостно падает и появляется вот такое окошко. вот код DA::DA(const DA & D1) { D = 0; try { std::cout << D1.N; N = D1.N; D = new deq;
C++ Вычислить периметр треугольника http://www.cyberforum.ru/cpp-beginners/thread821565.html
Вычислить периметр произвольного треугольника, если известны две его стороны и угол между ними.
C++ Найти стороны треугольника Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника. подробнее

Показать сообщение отдельно
palva
2511 / 1733 / 229
Регистрация: 08.06.2007
Сообщений: 6,806
Записей в блоге: 4
29.03.2013, 00:03     получить 4бит из байта
А поля использовать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main() {
    struct {
        // поля структуры
        union {
            unsigned char i;
            struct {int l:4, h:4;} i4;
        } n;
    } s;
    s.n.i4.l = 7;
    s.n.i4.h = 4;
    printf("%02X\n", s.n.i); // 47
    return 0;
}
Здесь сложно, потому два поля для пробы читаются как один байт.
А если их читать не нужно, то можно обойтись без union:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main() {
    struct {
        // поля структуры
        int l:4, h:4;
    } s;
    s.l = 7;
    s.h = 4;
    printf("%02X\n", s); // CCCCCC47
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru