Работа с битова логика

Работа с битова логика

  • размер на шрифта намалете размера на шрифта увеличете размера на шрифта
  • Печат

Двоична математика, работа с битова логика

Заедно с обичайните булеви операции с булеви типове, често е необходимо да се извършват операции с отделни битове, обикновено използвани като флагове. Разбирането на логическите операции е от съществено значение за ефективната работа.

Pascal поддържа следните логически операции

  • И - логично И;
  • ИЛИ - (включително) логическо ИЛИ;
  • XOR - (изключително) логическо ИЛИ;
  • NOT - отрицание или инверсия на бит;
  • SHL - логическа смяна наляво;
  • SHR - логическа смяна надясно.

Други логически операции с числата не са включени в Pascal, но са достъпни чрез асемблерни вложки.

Всеки бит може да има само две състояния FALSE или TRUE

Състоянието на малко може да бъде описано с други думи, някои от които идват от математиката, някои от електрониката, други от логиката.

За FALSE алтернативите са NONE, ZERO, DISABLED, NOT INSTALLED, CLEARED, FALSE, F, 0, - и други.

За TRUE алтернативите са YES, ONE, ON, INSTALLED, INCLUDED, TRUE, T, 1, + и други.

Нека разгледаме тези операции отделно.

И - логично И, тази операция изглежда така

Изразът е истина, когато и двата бита са истина. Поговорката "И там и там"

ИЛИ - (включително) логическо ИЛИ, тази операция изглежда така

Изразът е истина, когато поне един бит е истина. Поговорката "ИЛИ там ИЛИ там, включително и там и там"

XOR - (изключително) логично ИЛИ, тази операция изглежда така

Изразът е истина, когато само един бит е истина. Поговорката "ИЛИ там ИЛИ там, с изключение както там, така и там"

NOT - отрицание или инверсия на бит, тази операция се отнася само за един бит, действието на обикновената текуща стойност на бита е обърнато

SHL - логическа смяна наляво, операцията се отнася само за група битове, един от целочислените типове на Паскал, например байт, дума и т.н.

Shift байт наляво един бит.

Преместете байт наляво с две цифри.

Байтът се измества наляво с една или повече цифри, позициите вдясно се заменят с нули, позициите вляво се губят.

SHR - логическо изместване надясно, операцията се прилага само за група битове, един от целочислените типове на Паскал, например байт, дума и т.н.

Преместете байт надясно с един бит.

Преместете байт надясно с две цифри.

Байтът се измества надясно с една или повече цифри, позициите вляво се заменят с нули, позициите вдясно се губят.

Това завършва описанието на операциите и ние преминаваме към практически примери. Но първо, няколко думи за нотация

Нотация, използвана при показване на числа в литературата

Обичайно е цифрите да се показват в символна форма, така че най-малко значимите цифри да са вдясно, а линиите вляво и ако се използва подравняване, то също се подчинява на тези правила.

Номерирането на цифрите започва от нула в съответствие със степента на цифрата и се описва с формулата K * M ^ N, където K е коефициент в диапазона от 0 до M-1, M е основата на числото, и N е степента. Числото в степен 0 за всички бази е 1.

Нека разгледаме примера на следващата таблица за четири основни основи.

Основа

Стойност

Формула

1 * 10 ^ 2 + 0 * 10 ^ 1 + 0 * 2 ^ 0

1 * 16 ^ 2 + 0 * 16 ^ 1 + 0 * 2 ^ 0

Основа

Стойност

Формула

Невалидна комбинация

1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0

1 * 16 ^ 2 + 2 * 16 ^ 1 + 3 * 16 ^ 0

В началото ще бъдат разгледани няколко прости примера за използване на логически операции и в крайна сметка приложението на тези техники за работа с директории.

Получаване на позицията на бит или неговата стойност

В този пример, един се премества наляво с необходимия брой цифри и резултатът е двоична стойност, равна на 2 ^ N, където е зададен един единствен бит, съответстващ на цифрата на числото. Тази техника може да се използва с променлива за изчисляване на позицията по време на изпълнение или по време на компилация; във втория случай няма да се генерира код и компилаторът просто ще изчисли стойността и ще я замести в програмата, без да генерира допълнителен код. Това е полезно за посочване на битово число, без да се представя като десетична или шестнадесетична константа. Но по-често е по-удобно да се използват посочени константи, тъй като те са по-информативни, примери за това ще бъдат дадени в края на статията.