Кіріспе

Компьютерлік бағдарламалаудағы деректер құрылымы. Бит өрісі – белгілі бір мақсаттар үшін бөлінген бір немесе бірнеше іргелес биттерден тұратын деректер құрылымы, сондықтан құрылымдағы кез келген битті немесе биттер тобын орнатуға немесе тексеруге болады. Бит өрісі көбінесе белгілі, біт ені бекітілген бүтін типтерді, мысалы, бір биттік логикалық мәндерді көрсету үшін қолданылады. Өрістегі жеке биттердің мағынасын бағдарламашы анықтайды; мысалы, бит өрісінің бірінші биті (өрістің базалық мекенжайында орналасқан) кейде бит өрісімен байланысты белгілі бір атрибуттың күйін анықтау үшін қолданылады. Процессорлар мен басқа логикалық құрылғыларда бит өрістерінің жиынтығы, яғни флагтар, әдетте белгілі бір операцияларды басқару немесе олардың нәтижесін көрсету үшін қолданылады. Процессорларда флагтардан тұратын статус тіркелгісі болады. Мысалы, егер қосылған сан нәтижесін көрсетуге болмаса, арифметикалық ағып кету флагі қойылады. Флагтар келесі операцияларды шешу үшін қолданылуы мүмкін, мысалы, шартты секіру командаларын. Мысалы, x86 ассемблер тіліндегі JE (Jump if Equal) командасы, егер Z (нөл) флагі алдыңғы операцияда қойылған болса, секіруді орындайды. Бит өрісі, биттік массивтен өзгеше, өйткені соңғысы бүтін сандармен индексацияланған үлкен көлемдегі биттерді сақтау үшін қолданылады және көбінесе тіл қолдайтын кез келген бүтін типтен кеңірек болады. Ал бит өрістері әдетте машиналық сөздің ішіне сыяды. C тілінде, туған нұсқауда анықталған бит өрістерін int, unsigned int, signed int, Bool (C99-да), BitInt(N), unsigned BitInt(N) (C23-де) немесе басқа туған нұсқауда анықталған типтерді пайдаланып жасауға болады. C++ тілінде оларды кез келген бүтін немесе санау типін пайдаланып жасауға болады; көптеген C компиляторлары да мұны қабылдайды. Бұл жағдайда бағдарламашы бит өрісі үшін бірнеше қосалқы өрістердің енін анықтайтын және белгілейтін құрылымды жариялай алады. Бір типті көршілес жарияланған бит өрістері компилятормен жадты үнемдеу үшін азайтылған сандағы сөздерге жинақталады, егер әрбір "өріс" жеке жарияланған болса, одан көп жад қажет болар еді. Туған бит өрістері жоқ тілдер үшін немесе бағдарламашы нәтижедегі биттік ұсынылымды басқаруды қаласа, үлкен сөз типіндегі биттерді қолмен өңдеуге болады. Бұл жағдайда бағдарламашы маскалау және биттік операциялардың комбинацияларын пайдаланып, өрістегі биттерді орнатуға, тексеруге және өзгертуге болады.

Байрақ сөздердегі биттерді өзгерту

Жазу, оқу немесе флагтардағы биттерді өзгерту тек OR, AND және NOT операцияларын пайдаланып жасалуы мүмкін – процессорда жылдам орындалатын операциялар. Битті қою үшін, күй байтын маска байтымен OR операциясын жасаңыз. Маска байтында немесе күй байтындағы кез келген қойылған биттер нәтижеде қойылған болады. Битті ауыстыру үшін, күй байтын және маска байтын XOR операциясын жасаңыз. Бұл бит өшірілген болса, оны қояды немесе қойылған болса, өшіреді.