The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
pretty bitwise operations, !*! handler2006, 31-Май-12, 01:13  [смотреть все]
Здравствуйте!
Дано: Двухбайтовая битовая маска.
Задача: сравнить биты данной маски (к примеру, 13-ый и 14-ый).
Решение:

unsigned short bitMask = 0x6000; // (0110 0000 0000 0000)
int bitFlag = 3; // (0000 0000 0000 0000 0000 0000 0000 0011) in 32-bit arch
// todo
if ( (bitMask&(bitFlag<<13))>>13 == bitFlag )
{
  // bits are proprietary
}

На мой взгляд, конструкция корявая (сдвинули, сложили, опять сдвинули, потом сравнили результат с эталонным). Тем более в большом проекте такая конструкция будет вводить в ступор программистов.
Возможно, существуют более изящные приемы работы с битовыми массивами?
Спасибо.
Алексей



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру