На этом описание операций заканчивается,
На этом описание операций заканчивается, и переходим к практическим примерам. Но вначале немного слов о нотации
Применяемая нотация при отображении чисел в литературе
Числа в символьной форме принято отображать, так чтобы младшие разряды были справа, а строки слева, при этом если используется выравнивание, то оно тоже подчиняется этим правилам.
Нумерация разрядов начинается с нуля в соответствии со степень разряда и описывается формулой
K*M^N, где K это коэффициент в диапазоне от 0 до M-1, M это основание числа, а N это степень. Число в степени 0 для всех оснований равно 1.
Посмотрим на примере следующей таблицы для четырех основных оснований.
Для числа
100 Основание | Значение | Формула |
2 | 4 | 1*2^2 + 0*2^1 +0*2^0 |
8 | 64 | 1*8^2 + 0*8^1 +0*8^0 |
10 | 100 | 1*10^2 + 0*10^1 + 0*2^0 |
16 | 256 | 1*16^2 + 0*16^1 + 0*2^0 |
Для числа
123 Основание | Значение | Формула |
2 | X | Недопустимая комбинация |
8 | 83 | 1*8^2 + 2*8^1 + 3*8^0 |
10 | 123 | 1*10^2 + 2*10^1 + 3*10^0 |
16 | 291 | 1*16^2 + 2*16^1 + 3*16^0 |
Практические примеры
В начале несколько простых примеров по использованию логических операций, а в заключение будет рассмотрено применение этих приемов для работы с каталогами.
Получение позиции бита или его значения
1 shl N
В данном примере единица сдвигается влево на нужное количество разрядов, и в результате получаем двоичное значение, равное 2^N, где установлен один единственный бит, соответствующий разряду числа. Этот прием может использоваться с переменной для расчета позиции во время выполнения или во время компиляции, во втором случае код генерироваться не будет, а компилятор просто рассчитает значение и подставит его в программу, не генерируя дополнительного кода. Это удобно для указания номера бита, не представляя его в виде десятичной или шестнадцатеричной константы. Но чаще бывает удобнее использовать именованные константы, поскольку они более информативны, примеры этого будут приведены в конце статьи.
Установка бита
Для установки отдельного бита или группы битов используется операция ИЛИ, использование иллюстрируется ниже приведенным кодом в виде отдельной функции и результатом выполнения в виде таблицы.
function SetBit(Src: Integer; bit: Integer): Integer; begin Result := Src or (1 shl Bit); end; Здесь происходит следующее:
Сначала мы рассчитываем позицию бита - (
1 shl Bit), затем устанавливаем полученный бит и возвращаем результат через предопределенную переменную
Result. Пример использования: DummyValue := SetBit(DummyValue, 2);
Разряды | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
До (1) | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
После | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
До (2) | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
После | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
Содержание Назад Вперед