Школа создателей компьютерных игр

BannerDrive.ru
[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Бинарные операторы



Подпишитесь на рассылку "Создание компьютерных игр"

Рассылки Subscribe.Ru
Создание компьютерных игр

Рассылка выходит раз в месяц.


Понравился сайт? Узнайте, как помочь сайту.


Рекомендуемые книги


Андре Ламот.
Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации


Андре Ламот.
Программирование игр для Windows. Советы профессионала


Проголосуйте за сайт в рейтинге GameTop!
(нажмите на кнопку рейтинга)

GameTop - рейтинг игровых ресурсов. Портал Rolemancer (www.rolemancer.ru)

Не забывайте, что результаты рейтинга обновляются раз в неделю. Пожалуйста, голосуйте почаще!


Статистика посещаемости

Rambler's Top100

Последовательность выполнения | Все обучалки раздела | Директивы препроцессора

Описание

Объясняется, как работают бинарные операторы AND, OR и XOR. Также кратко обсуждается вопрос, что такое двоичное число.

Программа демонстрирует работу бинарных операторов.

Скачать обучалку (Visual C++ 6)

Работа программы

Исходный код

/*      Done by TheTutor -- 7/18/01
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

      Эта обучалка фокусируется на "бинарных операторах" - бинарные операторы, которые
      мы будем сейчас обсуждать это
          AND (в программах пишется как '&')
          OR  (в программах пишется как '|')
          XOR "exclusive or" (исключающее или) (в программах пишется как '^')

      А теперь небольшой урок о двоичных числах.

      Сперва необходимо дать математическое определение числам десятичной системы счисления (тем 
      что мы используем всегда -- 1, 2, 3...) И еще кое-что: Я буду обозначать возведение 
      в степень знаком '^' -- Например 2^2 = 4 

      Десятичная система работает так: если у нас например число 21, можно записать

      10^4      10^3      10^2      10^1      10^0

     0             0             0             2             1

      Это значит (2 * 10^1) + (1 * 10^0) В итоге получаем:
      (2 * 10) + (1 * 1) = 21

      Понятно ли вам это? -- Посмотрите внимательно, и вы должны понять.
      А теперь, двоичная система работает точно так же.

      Представим число 21 в двоичной системе

      2^5            2^4            2^3            2^2            2^1            2^0

        0                1                0                1                0                1

      Это значит что у нас (0 * 2^5) + (1 * 2^4) + (0 * 2^3) + (1 * 2^2) + (0 * 2^1) + (1 * 2^0)
      Здесь идет подсчет:  0 + 16 + 0 + 4 + 0 + 1 = 21

      Не правда ли довольно просто?

      Теперь, когда вы эксперт по двоичным числам, продолжим

      Используем в качестве примера числа 5 и 6.  Сначала 
      запишем их в двоичной системе

      101 = 5
      110 = 6

      Оператор AND (И) работает так:
                                                            0 AND 0 равно 0
                                                            0 AND 1 равно 0
                                                            1 AND 0 равно 0
                                                            1 AND 1 равно 1

      Точно так же, как мы складываем числа столбиком справа налево (можно наоборот)

      101
      110       AND
      --- 
      100 = 4                        Итак, 5 & 6 = 4 -- Отлично, теперь вы знаете оператор AND 

      *********************************************************************

      Оператор OR (ИЛИ) -- Снова возьмем 5 и 6.

      Оператор OR работает так:
                                                            0 OR 0 равно 0
                                                            0 OR 1 равно 1
                                                            1 OR 0 равно 1
                                                            1 OR 1 равно 1

      И тогда:

      101
      110  OR
      ---
      111 = 7            Таким образом 5 | 6 = 7 -- теперь вы знаете оператор OR 

      ********************************************************************

      И наконец, оператор XOR (exclusive or, исключающее ИЛИ) -- И снова наши числа 5 и 6

      Оператор XOR работает так:                  
                                                            0 XOR 0 равно 0
                                                            0 XOR 1 равно 1
                                                            1 XOR 0 равно 1
                                                            1 XOR 1 равно 0

      И тогда:

      101
      110  XOR
      ---
      011 = 3            Таким образом 5 ^ 6 = 3 -- теперь вы знаете оператор XOR 

      /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

      Я поместил "таблицу истинности" внизу этого файла .c

            Теперь несколько практических примеров

      */

#include <stdio.h> // Чтобы использовать printf()

int main()
{

      int num1 = 8;
      int num2 = 3;

      int answer = 6; // Здесь мы будем хранить ответы

      // Я предлагаю для вашего же блага ВЫЧИСЛИТЬ НА БУМАГЕ что же должно напечататься
      // Сделав это один раз, вы все хорошо запомните :)

      // Результат num1 AND num2
      answer = num1 & num2;
      printf("%d & %d = %d\n\n",num1,num2,answer);

      // Результат num1 OR num2
      answer = num1 | num2;
      printf("%d | %d = %d\n\n",num1,num2,answer);

      // Результат num1 XOR num2
      answer = num1 ^ num2;
      printf("%d ^ %d = %d\n\n",num1,num2,answer);

      // Результат (num1 AND num2) XOR (num1 OR num2)
      answer = (num1 & num2) ^ (num1 | num2);
      printf("(%d & %d) ^ (%d | %d) = %d\n",num1,num2,num1,num2,answer);

      return 0; // Конец программы

} // конец main()


// Практическое использование -----

      /* Самый быстрый способ установить переменной нулевое значение - сделать это с помощью XOR 

         Если у нас int an_int = 7;

         и мы хотим установить ее в 0, то можно записать:

                  an_int = an_int ^ an_int; --- Или в короткой записи -- an_int ^= an_int;

            Хороший компилятор заменяет все "an_int = 0;" на "an_int ^= an_int"
            VC++ делает это очень хорошо

            Еще один пример - если мы хотим узнать, четное ли число
            Это делают следующие строки:

            if((a_number & 1) != 0)
                  // Число нечетное
            else
                  // Число четное

      */


      /* Таблица истинности:

            AND       OR       XOR
            00|  0    0   0
            -------------------
            01|  0    1   1
            -------------------
            10|  0    1   1
            -------------------
            11|  1    1   0
            -------------------
      */
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com 

Скачать обучалку (Visual C++ 6)

Последовательность выполнения | Все обучалки раздела | Директивы препроцессора

[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Copyright © 2003-2005 Евгений Казеко. Все права защищены. E-mail: evgeniy@kazeko.com

Обслуживание клиентов: разная недвижимость Сочи квартиры адлера; опалубка цена; Качественное создание веб-сайтов раскрутка сайта - наилучшие результаты.; Прежде чем заказать можете посмотреть свадьбы на сайте; Продажа двери деревянные