Стефан Дэвис - С++ для чайников .
- Название:С++ для чайников .
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс. Компьютерное издательство Диалектика
- Год:2007
- Город:Москва
- ISBN:0-7645-6852-3, 978-5-8459-0723-3
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стефан Дэвис - С++ для чайников . краткое содержание
1
empty-line
4
С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
~0110 2( 0х6 )
1001 2( 0x9 )
Таким образом получаем, что ~0x6 равно 0x9 . В следующем примере продемонстрировано выполнение оператора &:
0110 2
&
0011 2
0010 2
Вычисляем, начиная со старших битов: 0 &0 равно 0. В следующем бите 1 & 0 равно 0. В третьем бите 1 &1 даёт 1, а в последнем бите 0 &1 даёт 0.
_________________
63 стр. Глава 4. Выполнение логических операций
Те же вычисления могут быть выполнены в шестнадцатеричной системе. Для этого нужно преобразовать числа в двоичное представление, выполнить операцию и преобразовать результат обратно.
0x06 0110 2
& &
0x03 0011 2
0x02 0010 2
Расписав числа таким образом, мы получили, что 0x6 & 0x3 равно 0x2 . ( Попробуйте подсчитать значение выражения 0х6 | 0x3 . Если вам это удастся, вы почувствуете себя на седьмом небе. Иначе очутитесь на первой из семи ступенек в преисподнюю. У меня на это ушло чуть меньше восьми минут. )
Простой пример...64
Следующая программа иллюстрирует работу побитовых операторов. В ней инициируются две переменные, к которым применяются операции &, |, ~, ^. Результаты вычислений выводятся на экран.
/* 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" ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ;
return 0 ;
}
_________________
64 стр. Часть 1. Первое знакомство с С++
Первая инструкция нашей программы ( та, которая следует за ключевым словом main ) — cout.setf( ios::hex ) ; — меняет используемый по умолчанию десятичный формат вывода на шестнадцатеричный ( поверьте мне, это сработает ).
В остальном программа очевидна. Присвоив значения аргументам nArg1 , nArg2 , она выводит все варианты побитовых вычислений над этими переменными. Результат выполнения программы будет выглядеть следующим образом:
Arg1 = 0x1234
Arg2 = 0xff
~nArg1 = 0xffffedcb
~nArg2 = 0xffffff00
nArg1 & nArg2 = 0x34
nArg1 | nArg2 = 0x12ff
nArg1 ^ nArg2 = 0x12cb
Press any key to continue...
Практическое применение логических вычислений...65
На первый взгляд описанные операторы кажутся оторванными от жизни, но поверьте, в программировании они используются очень часто. Потерпите до следующей главы — и вы поймёте всю важность логических вычислений в программах.
_________________
65 стр. Глава 4. Выполнение логических операций
ОГЛАВЛЕНИЕ
В этой главе...
►Управление ходом программы с помощью команд ветвления 66
►Выполнение циклов 68
►Вложенные команды управления 76
►Инструкция выбора 77
Простые программки, которые появлялись в первых четырёх главах, обрабатывали фиксированное количество вводов и выводов результатов вычислений, после чего завершали работу. Эти приложения были лишены какого бы то ни было контроля над работой программы, в частности не выполняли никаких проверок. Но компьютерные программы могут принимать решения. Вспомните: когда пользователь нажимает клавиши, компьютер реагирует на это выполнением соответствующих команд.
Например, если пользователь нажимает , компьютер копирует содержимое выделенного блока в буфер обмена. Если пользователь перемещает мышь, на экране двигается её курсор. Этот список можно продолжать до бесконечности. Программы же, которые не принимают никаких решений, неизбежно скучны и однообразны.
Команды, управляющие ходом программы, указывают на то, какие действия она должна выполнить в зависимости от результата вычисления какого-либо логического выражения ( о которых шла речь в главе 4, "Выполнение логических операций"). Существует три типа управляющих инструкций: операторы ветвления ( или условного перехода ), цикла и выбора.
►Управление ходом программы с помощью команд ветвления...66
Проще всего управлять ходом программы с помощью инструкции ветвления, которая позволяет программе, в зависимости от результата логического выражения, решить, по какому из двух возможных путей выполнения инструкций следует двигаться дальше. В С++ оператор условного перехода реализуется с помощью инструкции if :
if ( m > n )
{
/* 1-я последовательность операторов. Инструкции, которые должны быть выполнены, если m больше n */
}
else
{
/* 2-я последовательность операторов. Инструкции, которые нужно выполнить в противном случае */
}
_________________
66 стр. Часть 1. Первое знакомство с С++
Прежде всего вычисляется логическое выражение m > n . Если его значение — true , программа выполняет первую последовательность операторов. Если же выражение ложно, управление передаётся второй последовательности. Оператор else не обязателен: если он опущен, С++ считает, что он существует, но является пустым.
Интервал:
Закладка: