Привет!!! 1)У меня есть переменная 2 байта 0xabcd как мне из неё вытащий старщий байт 2) Как работать с битами, мне нужно узнавать установленные флаги Спасибо.
ajak 1) WORD 2bytes = 0xABCD; 2bytes >>= 8; 2) bit0 = 0x1; bit1 = 0x2; bit2 = 0x4; bit3 = 0x8; if(var & bit0) action_bit0(); if(var & bit1) action_bit1(); if(var & bit2) action_bit2(); if(var & bit3) action_bit3();
ajak А чтобы ты еще и третий вопрос не задал, то держи: #define BIT0 0x1; // 0000 0000 0000 0001 #define BIT1 0x2; // 0000 0000 0000 0010 #define BIT2 0x4; // 0000 0000 0000 0100 #define BIT3 0x8; // 0000 0000 0000 1000 WORD Bits; bits = BIT0 | BIT2; // Set bit0 and bit2; установка битов
ajak Может быть, проще будет сделать BASM-вставку? __asm { ; <---- Извлечение из WORD старшего байта MOV AX, ваша_переменная MOVZX EAX, AH ; <---- Тестирование нужного бита: BT EAX, номер_бита(отсчёт начинается с нуля) JC @бит_включён JNC @бит_сброшен }
асм вставка посреди сишного кода а не в отдельной для этого функции это мда. асм вставка в С коде для работы с битами в числе когда в С для этого куча есть встроенных средств это мда асм вставка вообще это мда
l_inc Млин, не для тебя этот баг допустил, а для чела, который хоть немного должен научиться чему-то )))
EvilsInterrupt Эм... может стоило, чтобы не привлекать таких любителей выпендриться, как я, оставить пометку вида: "И шоп нихто не вздумал делать мне замечания по поводу этого поста!" ?
l_inc Нада каждого новичка получившего ответ на свой вопрос обязать описать понятным языком ответ на свой вопрос! В конечном итоге будет реализован РТФМ для новичков от новичков, т.е на понятном им языке