Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Типы, операторы и выражения


Унарный оператор ~ выдает противоположное значение указанного целого, то есть, он превращает каждый 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 позиций.

Другие статьи по теме:

- Внешние переменные и область действия
- Символьные массивы
- Функции и структура программ
- Типы, операторы и выражения
- Введение в c++


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2019 © SMTI.RU
Главная страница | Связаться с нами