Логический флаг


Логический флаг , бит истины или флаг истины в информатике — это логическое значение , представленное в виде одного или нескольких битов, которое кодирует переменную состояния с двумя возможными значениями.

Один байт может содержать до 8 отдельных логических флагов путем сопоставления одного логического флага с каждым битом, что делает его очень экономичным и плотным методом хранения данных. Это известно как упакованное представление или побитовая упаковка, а противоположное кодирование, в котором используется только один логический флаг на каждый байт, известно как разреженное представление. Для памяти с побайтовой адресацией упакованное представление требует битовой маски и битового сдвига для доступа к отдельным флагам в каждом байте, что может потребовать дополнительных инструкций, тогда как разреженное представление не требует битовой маскировки. Упакованные представления чаще встречаются в аппаратных и процессорных регистрах в виде битовых полей [1] , тогда как разреженные представления чаще встречаются в программном обеспечении в виде переменных шириной в один или несколько байтов, хотя также могут поддерживаться упакованные представления. [2]

Большинство компьютерных языков поддерживают настройку и тестирование одного или нескольких битов в комбинации для использования в качестве индикаторов истинности, и обычно можно проверить до 256 различных комбинаций условий с помощью всего лишь одной инструкции для одного байта с использованием побитовых операций . Достижения в разработке процессоров и параллельных вычислениях означают, что еще больше операций булевой алгебры над логическими флагами можно выполнить с помощью всего лишь одной инструкции с использованием технологии SIMD , часто реализуемой в языках программирования как встроенные функции компилятора . [3]

Иногда программы пишутся так, чтобы просто устанавливать флаги при обнаружении определенных условий, а не иметь несколько вложенных условных операторов (например, ifs), которые могут оказаться довольно сложными. Когда все условия проверены и все флаги установлены или выключены соответствующим образом, тестирование может начаться с различных комбинаций условий - со ссылкой на флаги, а не на сами переменные. Это может значительно упростить обработку и позволяет реализоватьтаблицы решений путем сопоставления их двоичных представлений в памяти.