си?
хочу тип данных обьявить содержит знаения от 0 до 31 и состоит из 5 значений (массив из 0 и 1). По идее 00000 - 0 и 11111 - 31. Как-нибудь это реализуемо или идея безнадежная?
Т.е создать тип данных который сам по себе будет массивом кто нибудь сталкивался с подобной задачей?
что то навроде:
typedef enum[4]{1,0}byte;
byte name = (0,0,0,0,0);
звучит как enum
Меньше байта у тебя не получится никак. Отдельные биты ты можешь объявлять через битфилды: typedef struct { bool a:1, b:1, c:1, d:1, e:1; } FiveBits, но в результате всё равно получится байт. Синтаксиса массива для битфилдов вроде нет.
спасибо. Байт вроде как наименьшанья адресуемая еденица?
Да. Но ты можешь с помощью побитовых операций (или инструкций bt* в x86) поверх байтов реализовывать что угодно.
Проще объявить char и юзать её как число. А старшие 3 бита просто не использовать. Побитовый доступ сделать через побитовые операции. Экономно
Обсуждают сегодня