ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
118770 Топик полностью
blackbit (22.04.2008 13:58, просмотров: 93) ответил blackbit на ..да полно, сделай бегущую единицу на масках и не парься. Будет просто, дешево и мощно.
..типа так: объявляешь десять масок (по числу анализируемых позиций бита) #define maska1 0x0001 // b''0000 0000 0000 0001' #define maska2 0x0002 // b''0000 0000 0000 0010' #define maska3 0x0004 // b''0000 0000 0000 0100' ... а потом в фунции накладываем последовательно маску на число, пока единица не наткнется на первую не равную 0 позицию, ее и выводим по return: unsigned char fun(unsigned int var); { if(maska1 & var) return 0; if(maska2 & var) return 1; if(maska3 & var) return 2; //... число строк if равно числу исследуемых позиций } Короче, всё на предикатах, чистейший Пролог.. ;) И никаких наворотов типа Hacker's Delight. %)