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

Создать свой целочисленный тип данных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
13.09.2011, 12:52     Создать свой целочисленный тип данных #1
Здравствуйте, у меня возник вопрос, можно ли создать например целочисленный тип данных, который может принимать только значения от 1 до 4 и выделять под него 2 бита (00-'1'; 01-'2'; 10-'3'; 11-'4'). Нас пока учили создавать новые типы через структуры на основе стандартных типов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
13.09.2011, 12:53     Создать свой целочисленный тип данных #2
Сделай свою запаковку и распаковку в стандартный unsigned int
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.09.2011, 12:58     Создать свой целочисленный тип данных #3
fenix117, Если это одно значение, то выигрыша не будет никакого, дискретность тех же указателей до байта....а вот если это например массив таких значений, тогда можно оптимизировать память и написать класс, который будет с этими данными работать.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.09.2011, 15:14     Создать свой целочисленный тип данных #4
C
1
2
3
4
5
6
struct bt {
    unsigned char a:2;
    unsigned char b:2;
    unsigned char c:2;
    unsigned char d:2;
};
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.09.2011, 04:19     Создать свой целочисленный тип данных #5
Jupiter, для битовых полей определёнными являются только int, signed int и unsigned int

C89(draft)
3.5.2.1 Structure and union specifiers

...

A bit-field may have type int , unsigned int , or signed int .
Whether the high-order bit position of a ``plain'' int bit-field is
treated as a sign bit is implementation-defined. A bit-field is
interpreted as an integral type consisting of the specified number of
bits.
Цитата Сообщение от fenix117
который может принимать только значения от 1 до 4 и выделять под него 2 бита
C
1
struct int_type { unsigned int val : 2; };
занимать она будет не два бита, а sizeof(unsigned int)
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.09.2011, 10:32     Создать свой целочисленный тип данных #6
C++(2003)
9.6
...
9.6.3 A bit-field shall have integral or enumeration type (3.9.1). It is
implementation-defined whether a plain (neither explicitly signed nor unsigned) char, short, int or
long bit-field is signed or unsigned.
Yandex
Объявления
14.09.2011, 10:32     Создать свой целочисленный тип данных
Ответ Создать тему
Опции темы

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