Забавно, что никто не счел нужным упомянуть массив ctype [] в C / C ++ - также реализованный в Java.Эта концепция чрезвычайно полезна при обработке языка, особенно при использовании разных алфавитов или при разборе предложения.
ctype [] - это массив из 256 коротких целых чисел, и в каждом целом числе есть биты, представляющие разные типы символов,Например, ctype [; A '] - ctype [' Z '] имеют биты, установленные, чтобы показать, что они являются заглавными буквами алфавита;ctype ['0'] - ctype ['9'] имеют биты, установленные, чтобы показать, что они числовые.Чтобы увидеть, является ли символ x буквенно-цифровым, вы можете написать что-то вроде «if (ctype [x] & (UC | LC | NUM))», что несколько быстрее и намного более элегантно, чем запись «if ('A' = x <= 'Z' || .... '. </p>
Как только вы начинаете мыслить побитно, вы находите много мест для его использования. Например, у меня было два текстовых буфера. Я записал один в другой, заменив еговсе вхождения FINDstring с REPLACEstring по мере того как я пошел. Затем для следующей пары находить-заменить я просто переключал индексы буфера, поэтому я всегда записывал из буфера [in] в buffer [out]. 'in' начинался как 0, 'out 'как 1. После завершения копирования я просто написал' in ^ = 1; out ^ = 1; '. И после обработки всех замен я просто записал буфер [out] на диск, не нужно знать, что было "out"в то время.
Если вы думаете, что это низкий уровень, учтите, что определенные умственные ошибки, такие как дежа-вю и его близнецовый джамаис-ву, вызваны ошибками в мозговых битах!