Побитови операции и целочислено умножение / делене
Най-бързата памет в един компютър са регистрите на процесора. Ако поне част от използваните аритметични действия в една програма са чрез побитови операции, то работата на програмата като цяло се ускорява значително. Побитови операции са реализирани в много езици за програмиране и C++ не прави изключение.
Разгледани са няколко побитови операции като:проверка за стойност различна от 0 - чрез оператора "!";
превръща всеки бит от числото със стойност 0 в 1 и обратно - чрез оператора "~";
целочислен остатък - чрез оператора "%";
побитови логически операции AND; OR; XOR; - дадена е таблица на съответствие.
целочислено умножение / делене на 2 - чрез операторите за изместване наляво/надясно "<<", ">>".
Логиката на последната операция е следната: ако прибавим към двоично число 0 след неговата последна цифра, то това е равносилно на умножение на числото по 2. Респективно, ако изтрием неговата най-дясна цифра, то това е равносилно на делене на 2. Действията се отнасят само за естествени числа.
Следващата програма дава решена задача, илюстрираща описаните действия с побитови операции:
Изискването за променливите, участващи в побитови операции е те да са цели числа. Със следващата програма се илюстрира една от най-често срещаните грешки в програмирането - грешка при деклариране типа на променливата. Ако последователно умножаваме по 2 на положителна стойност, то след всяко поредно умножение стойността би трябвало да нараства. Тук умножението се извършва с оператора за преместване << и параметър 1, т.е. целочислено умножение по 2. И това действително се получава до достигане граничната стойност за типа променлива. Всяко следващо умножение води до напълно логичен, но странен резултат - препълване. Следващата примерна програма илюстрира грешка с една от често срещаните побитови операции - целочислено умножение по 2:
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.