|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Побітові (порозрядні) операціїПоля бітів Бітові поля (bit fields) - особливий вид полів структури. Вони дають можливість задавати кількість бітів, в яких зберігаються елементи цілих типів. Бітові поля дозволяють раціонально використовувати пам'ять за допомогою зберігання даних в мінімально потрібній кількості бітів.
Робота з полями бітів залежить від конкретної ЕОМ і реалізації транслятора. Приклад: struct polebit { unsigned i:2; unsigned j:6; int:3; // без імені; unsigned k:3; unsigned l:2; } mypole;
Побітові (порозрядні) операції Є шість операцій для бітів, їх можна застосувати лише для типів char, int, long, знакових і беззнакових.
& - порозрядне І | - порозрядне АБО ^ - порозрядне додавання по модулю 2 ~ - порозрядне заперечення << - зсув вліво >> - зсув вправо n=n & 0177 (зануляє всі розряди крім молодших семи); n=n | 0001 (встановлює в 1 молодший біт); n=n<<2 (зсуває біти вліво на 2 позиції, біти; які звільнилися заповнюються нулями); n=n>>2 (зсув вправо для без знакових; біти, які звільняться заповнюються нулями, для знакових – заповнюються знаком. Але це залежить від реалізації. Можливі варіанти).
123 ~ 1111011 123 | 321 = 379 123 & 321 = 65 321 ~ 101000001 123<<5=3936 123>>1=61
Приклад використання порозрядних операцій: вивід бітового представлення числа
void show_bit(unsigned j) { int i; for (i=15; i>=0; i--) //операція зсуву має більший пріоритет, ніж & printf(“ %d ”,j>> i & 1); }
main() { int value; show_bit(25); show_bit(12); printf(“Вв.число \n”); scanf(“%d”, &value) if (value>=0) show_bit(value) }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |