Читаем С++ для "чайников" . полностью

      0( false ) | 1 ( true ) равно 1( true )

_________________

62 стр. Часть 1. Первое знакомство с С++

    Таблица 4.3. Таблица истинности оператора &

      &  1 0

      1   1 0

      0   0 0 

В таблице столбцы соответствуют значению одного аргумента, а строки — второго; результат операции находится на пересечении соответствующих строки и столбца. Так, из таблицы видно, что получить в результате операции & можно только если оба операнда равны 1. Далее в табл. 4.4 приведена таблица истинности оператора | ( ИЛИ ).

    Таблица 4.4. Таблица истинности оператора |

      |   1 0

      1  1 1

      0  1 0

Для последнего логического оператора, называемого "исключающее или" ( XOR ), прямой аналог в повседневной жизни найти труднее. Он возвращает значение true, если истинным является какой-то один ( но не оба! ) из его аргументов. Таблица истинности этого оператора представлена ниже ( табл. 4.5 ).

    Таблица 4.5. Таблица истинности оператора ^

      ^  1 0

      1  0 1

      0  1 0

Теперь, зная, как работают эти операторы с отдельными битами, рассмотрим их применение к двоичным числам.

<p id="chapter4.4.2"><strong><emphasis>Использование побитовых операторов...63</emphasis></strong></p>

Побитовые операторы работают отдельно с каждым битом.

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

      ~01102 ( 0х6 )

       10012 ( 0x9 )

Таким образом получаем, что ~0x6 равно 0x9. В следующем примере продемонстрировано выполнение оператора &:

      01102

      &

      00112

      00102

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

_________________

63 стр. Глава 4. Выполнение логических операций

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

      0x06        01102

      &             &

      0x03        00112

      0x02        00102

Расписав числа таким образом, мы получили, что 0x6 & 0x3 равно 0x2. ( Попробуйте подсчитать значение выражения 0х6 | 0x3. Если вам это удастся, вы почувствуете себя на седьмом небе. Иначе очутитесь на первой из семи ступенек в преисподнюю. У меня на это ушло чуть меньше восьми минут. )

<p id="chapter4.4.3"><strong><emphasis>Простой пример...64</emphasis></strong></p>

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

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

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

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

      #include

      #include

      #include

      using namespace std ;

      int main( int nNumberofArgs , char* pszArgs[ ] )

      {

         /* отмена формата по умолчанию( десятичного ), или можно и так отменить cout.unsetf( cout.dec ) */

         cout.unsetf( ios::dec ) ;

         /* теперь можно установить вывод переменных в шестнадцатеричном виде */

         /* установка вывода переменных в шестнадцатеричном виде, или можно и так cout.setf( cout.hex ) */

         cout.setf( ios::hex ) ;

         /* инициализация двух аргументов */

         int nArg1 ;

         nArg1 = 0x1234 ;

         int nArg2 ;

         nArg2 = 0x00ff ;

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

         /* Сначала применяем унарный оператор NOT */

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

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

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

         cout << "~nArg2        = 0x" << ~nArg2 << "\n" ;

         /* Теперь — бинарные операторы */

         cout << "nArg1 & nArg2 = 0x"

               << ( nArg1 & nArg2 )

               << "\n" ;

         cout << "nArg1 | nArg2 = 0x"

               << ( nArg1 | nArg2 )

               << "\n" ;

         cout << "nArg1 ^ nArg2 = 0x"

               << ( nArg1 ^ nArg2 )

               << "\n" ;

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных