Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование битовых операторов




Битовые операторы выполняются подобно любым другим арифметическим операторам. Самым легким для понимания является оператор ~. Выполнить операцию~ над числом означает выполнить ее над каждым битом числа.

~01102 (0x6)

10012; (0х9)

Таким образом, получаем, что ~0х6 равно 0x9.

В следующем примере продемонстрировано выполнение оператора &:

01102

&

00112

00102

Вычисляем, начиная со старших битов: 0 & 0 равно 0. В следующем бите 1 & 0 равно 0. В третьем бите 1 & 1 дает 1, а в последнем бите 0 & 1 дает 0.

Те же вычисления могут быть выполнены в шестнадцатеричной системе.

Для этого нужно преобразовать числа в двоичное представление, выполнить операцию и преобразовать результат обратно.

0x06 01102

& &

0x03 00112

0x02 00102

Расписав числа таким образом, мы получили, что 0x6 & 0x3 равно 0x2.

Пример 6. Программа иллюстрирует работу побитовых операторов. В ней инициируются две переменные, к которым применяются операции &, |, ^. Результаты вычислений выводятся на экран.

// BitTest – инициируются две переменные и

// выводятся результаты выполнения

// операторов ~, &, | и ^

#include <stdio.h>

#include <iostream.h>

#include <conio.h>

int main(int nArg1)

{

// Установка вывода в шестнадцатеричном виде

cout.setf (ios::hex, ios::hex) ;// инициализация двух аргументов

int nArgl;

int nArg2;

cout<<”Vvedite nArg1: “;

cin>>nArg1;

cout<<”Vvedite nArg2: “;

cin>>nArg2;

// Выполнение логических операций

// Унарный оператор NOT

cout<<”Arg1 = 0x”<<nArg1<<”\n”;

cout<<”Arg2 = 0x”<<nArg2<<”\n”;

cout<<”~nArg1 = 0x”<<~nArg1<<”\n”;

cout<<”~nArg1 = 0x”<<~nArg2<<”\n”;

// Выполнение бинарных операторов

cout<<”nArg1 & nArg2 = 0x”<<(nArg1&nArg2) <<”\n”;

cout<<”nArg1 | nArg2 = 0x”<<(nArg1|nArg2) <<”\n”;

cout<<”nArg1 ^ nArg2 = 0x”<<(nArg1^nArg2) <<”\n”;

getch();

}

Первая инструкция нашей программы (та, которая следует за ключевым словом main) – cout. setf (ios::hex); – меняет используемый по умолчанию десятичный формат вывода на шестнадцатеричный.

Далее, присвоив значения аргументам nArgl, nArg2, она выводит все варианты побитовых вычислений над этими переменными.

Результат выполнения программы будет выглядеть следующим образом:

К шестнадцатеричным числам всегда приписывается префикс 0х.

Предназначение большинства операторов очевидно. В необходимости операторов - или + сомневаться не приходится. Не нужно рассказывать, для чего используется оператор ||. Но для начинающих программистов может быть далеко не очевидно, зачем использовать битовые операторы.

Оператор & часто используется для маскирования информации. Например, предположим, что нам нужно выделить последний значимый шестнадцатеричный разряд из четырехразрядного числа:

0x1234 0001 0010 0011 0100

&

0x000F 0000 0000 0000 1111

0x0004 0000 0000 0000 0100

С помощью этого оператора можно также выделять и устанавливать значения отдельных битов. Представьте себе, что в написанной вами базе данных для сохранения некоторой информации о личности используется единственный бит. Первый значимый бит равен 1, если это особа мужского пола, второй бит равен 1, если это программист, третий равен 1 в случае внешней привлекательности, а четвертый – если человек имеет собаку. Взгляните на табл. 4.

 

Таблица 4. Значения битов

Бит Значение
  1 → мужчина
  1 → программист
  1 → привлекательный
  1 → владелец собаки

 

Не особо привлекательный, имеющий собаку программист мужского рода будет закодирован числом 11012. В этом случае число 1011 является маской, потому что оно маскирует, исключая из рассмотрения, биты с не интересующими вас характеристиками.

Варианты заданий к лабораторной работе №3

Задание. Записать выражение, зависящее от координат точки X 1 и Y 1 и принимающее значение TRUE (t или 1), если точка принадлежит выделенной области, и FALSE (f или 0), если не принадлежит. Результаты вычислений вывести на печать. При выполнении задания использовать переменную логического типа, а не условный оператор.

Вариант 1.

Вариант 2.

Вариант 3.

Вариант 4.

Вариант 5.

Вариант 6.

Вариант 7.

Вариант 8.

Вариант 9.

Вариант 10.

Вариант 11.

Вариант 12.

Вариант 13.

Вариант 14.

Вариант 15.

Содержание отчета

· цель работы;

· задание;

· код программы;

· блок-схема;

· результаты работы программы;

· выводы по работе.

Список литературы

1. Ален И. Голуб. Правила программирования на Си и Си++. Пер. с англ.: – М.: Вильямс, 2001. – 241 с.

2. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2010.

3. Прата С. Язык программирования С++. Лекции и упражнения. СПб.: Питер, 2003. – 645 с.

 

Учебное издание

 

МАМОНОВА Татьяна Егоровна

ЛОГИЧЕСКИЕ ОПЕРАЦИИ В С++

Методические указания по выполнению лабораторных работ

по курсу «Информатика» для студентов I курса, обучающихся по направлениям 220000 – «Мехатроника и робототехника»,

220700 – «Автоматизация технологических процессов и производств».

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...