|
Типы, операторы и выраженияУнарный оператор ~ выдает противоположное значение указанного целого, то есть, он превращает каждый 1-бит на 0-бит, и наоборот. Например x = x & ~ 077 устанавливает последние шесть битов x в ноль. Обратите внимание, x & ~ 077 не зависит от длины "слова", поэтому ему отдается предпочтение над, скажем, x & 0177700, которое предполагает, что x является 16-битной величиной. Портабельна форма не забирает дополнительных ресурсов поскольку ~ 077 - это устойчивое выражение, которое оценивается во время компиляции. Как иллюстрация некоторых разрядных операторов рассмотрим функцию getbits (x, p, n), которая возвращает (виривнянe с правой стороны) n-битовое поле x, начиная с положения p. Мы предположим, что битное положение 0 находится по крайней правой стороны и, что n с p - это действующие дополнительные значения. Так, например, getbits (x, 4,3) возвращает три бита, находящихся в 4-ой, 3-й и 2-ой позиции, выровнена справа. / * Getbits: добывает n битов, начиная с положения p * / unsigned getbits (unsigned x, int p, int n) { return (x>> (p +1- n)) & ~ (~ 0 < Выражение x>> (p +1- n) перемещает нужное нам поле на правый край слова. ~ 0 состоит из одних 1-бит; смещение его влево на n позиций с помощью ~ 0 < Упражнение 2-6. Напишите функцию setbits (x, p, n, y), которая бы возвращала x, в котором n битов, начиная с положения p, равны крайним правым n битам y, оставляя остальные битов неизменными. Упражнение 2-7. Напишите функцию invert (x, p, n), которая бы возвращала x, в котором порядок n битов, начиная с положения p, было бы обратно на противоположный (т.е. 1 заменено на 0 и наоборот), оставляя остальные битов неизменными. Упражнение 2-8. Напишите функцию rightrot (x, n), которая возвращает значение целого x, обращенного в правую сторону на n позиций. Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Продолжение статьи: ч.15 Продолжение статьи: ч.16 Продолжение статьи: ч.17 Продолжение статьи: ч.18 Продолжение статьи: ч.19 Другие статьи по теме: - Символьные массивы- Внешние переменные и область действия - Типы, операторы и выражения - Функции и структура программ - Введение в c++ |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |