Re[4]: Быстро проверить на BCD
От: tyomchick Россия  
Дата: 27.06.17 07:12
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Здравствуйте, tyomchick, Вы писали:


С>>>Есть. Двигать вправо, читать по 4 битика и проверять — не больше ли они, чем 9.


T>>Ну это "в лоб", я думал может какая битовая магия есть.


W>Типа такой, что ли?
bool is_bcd(ui32 x) { 
W>    return 0 == ((((x >> 1) & 0x77777777) + 0x33333333) & 0x88888888);
W>}
W>


Спасибо

W>Неужели этот код настолько часто исполняется, что стоит заморачиваться с подобными оптимизациями?


Ну не то, что бы я заморачивался. Просто вот так же и короче и чуть быстрее работает (проверил).
Полезно в библиотеке функцию иметь.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.