Кіріспе

Компьютерлік ғылым тақырыбы

Компьютерлік бағдарламалауда биттік операция биттік тізбек, биттік массив немесе екілік сан (биттік тізбек ретінде қарастырылады) деңгейінде, оның жеке биттерімен жұмыс істейді. Бұл жылдам және қарапайым амал, жоғары деңгейдегі арифметикалық операциялардың негізі және процессормен тікелей қолдау көрсетіледі. Көптеген биттік операциялар екі операндты нұсқаулар түрінде ұсынылады, онда нәтиже кіріс операндарының біреуін ауыстырады. Қарапайым, төмен құнмен процессорларда, әдетте, биттік операциялар бөлуден едәуір жылдам, көбейтуден бірнеше есе жылдам, ал кейде қосудан да жылдам болады. Қазіргі заманғы процессорлар ұзақ нұсқаулар құбырлары мен басқа архитектуралық шешімдерінің арқасында көбінесе қосу және көбейтуді биттік операциялармен бірдей жылдамдықпен орындайды, бірақ биттік операциялар ресурстарды аз пайдалануына байланысты көбінесе аз қуатты тұтынады.

Бит бойынша операторлар

Төмендегі түсіндірмелерде бит позициясының кез келген көрсеткіші оң жақтан (ең кіші маңызды) басталса, солға қарай есептеледі. Мысалы, 0001 екілік саны (ондық 1) бірінші (яғни, оң жақтағы) разрядында 1-ге ие, ал қалған разрядтары 0-ге тең.

Біт ауысулары

Біттерді жылжыту кейде біттік операциялар деп есептеледі, себебі олар мәнді сандық шама ретінде емес, біттер тізбегі ретінде қарастырады. Мұндай операцияларда сандар солға немесе оңға жылжытылады. Компьютер процесорының регистрлерінің ені белгілі болғандықтан, бір жағынан кейбір биттер "сыртқа жылжытылады", ал екінші жағынан сол көлемдегі биттер "ішке жылжытылады"; біттерді жылжыту операторларының айырмашылығы жылжытылған биттердің мәнін қалай анықтайтындарында болады.

Логикалық ауысу

Логикалық өзгерісте, жойылған биттердің орнына нөлдер қосылады. Сондықтан логикалық және арифметикалық солға жылжытулар бірдей. Дегенмен, логикалық оңға жылжыту ең маңызды битке 0 мәнін қосады, белгі бітін көшірмейді, сондықтан ол белгісі жоқ екілік сандар үшін өте қолайлы, ал арифметикалық оңға жылжыту белгілі екілік сандардың екілік толықтыру түрі үшін өте қолайлы.

Дөңгелекті ауысу

Жылжытудың тағы бір түрі – дөңгелек жылжу, биттік айналу немесе бит бойынша бұру.

Айналдыру

Бұл операция кейде "айналдыру көшірусіз" деп аталады, онда биттер тіркелгінің сол және оң жақтары біріктірілгендей "айналдырылады". Солға қарай жылжыту кезінде оңға жылжытылатын мән солға жылжытылып шығарылған мәнмен бірдей болады, ал оңға жылжыту операциясында керісінше. Бұл барлық қолданыстағы биттерді сақтап қалу қажет болғанда пайдалы және цифрлық криптографияда жиі қолданылады.

Ауыстыру арқылы айналдыру

Айналдыру арқылы жылжыту – айналдыру операциясының бір түрі, онда жылжытылатын бит (екі шетінде) тасымалдау туының бұрынғы мәні болып табылады, ал жылжытылып шығарылатын бит (екінші шетінде) тасымалдау туының жаңа мәніне айналады. Бір рет айналдыру арқылы жылжыту, тасымалдау туын алдын ала орнату арқылы бір позицияға логикалық немесе арифметикалық жылжытуды имитациялай алады. Мысалы, егер тасымалдау туы 0-ді қамтитын болса, онда x RIGHT ROTATE THROUGH CARRY BY ONE логикалық оңға жылжыту болады, ал егер тасымалдау туы таңба битінің көшірмесін қамтитын болса, онда x RIGHT ROTATE THROUGH CARRY BY ONE арифметикалық оңға жылжыту болады. Осы себепті, кейбір микроконтроллерлер, мысалы, төменгі деңгейдегі PIC процессорлары, тек айналдыру және айналдыру арқылы жылжыту мүмкіндіктерін ғана ұсынады, ал арифметикалық немесе логикалық жылжыту нұсқауларымен айналыспайды. Айналдыру арқылы жылжыту, процессордың негізгі сөз өлшемінен үлкен сандарды жылжыту кезінде ерекше пайдалы, себебі егер үлкен сан екі тіркегіште сақталса, бірінші тіркегіштің бір жағынан жылжытылған бит екінші тіркегіштің екінші жағынан кіруі керек. Айналдыру арқылы жылжыту мүмкіндігі арқасында, бұл бит бірінші жылжыту кезінде тасымалдау туында "сақталады" және екінші жылжыту кезінде қосымша дайындықсыз жылжытуға дайын болады.

Буль алгебрасы

Кейде біттік операциялардан құралған күрделі өрнектерді жаңайту пайдалы, мысалы, компилятор жазғанда. Компилятордың мақсаты – жоғары деңгейдегі бағдарламалау тілін мүмкіндігінше тиімді машиналық кодқа аудару. Күрделі біттік өрнектерді жаңайту үшін Буль алгебрасы қолданылады.