![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
dvmisha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Есть следующая программа из самоучителя, иллюстрирующая работу побитовых операторов.
// BitTest -инициируются две переменные и выводятся результаты выполнения // операторов ~, &, |, и ^ #include <cstdio> #include <cstdlib> #include <iostream> using namespace std; int main (int nArg, char* pszArgs[]) { // Установка вывода в шестнадцатеричном виде cout.setf(ios::hex, ios:: hex); // инициализация двух аргументов int nArg1 = 0x1234; int nArg2 = 0x00ff; // выполнение логических операций // сначала выполняем унарный оператор NOT cout << " Arg1 =0x" << nArg1<<"\n"; cout << " Arg2 =0x" << nArg2<<"\n"; cout << " ~Arg1 =0x" << ~nArg1<<"\n"; cout << " ~Arg2 =0x" << ~nArg2<<"\n"; // Теперь - бинарные операторы cout << "nArg1 & nArg2 = ox" <<(nArg1 & nArg2) << "\n"; cout << "nArg1 | nArg2 = ox" <<(nArg1 | nArg2) << "\n"; cout << "nArg1 ^ nArg2 = ox" <<(nArg1 ^ nArg2) << "\n"; system("pause"); return 0; } Результат выполнения программы должен выглядеть следующим образом: Arg1 =0x1234 Arg2 =0xff ~nArg1 =0xffffedcb ~nArg2 =0xffffff00 nArg1 & nArg2 =0x34 nArg1 | nArg2 =0x12ff nArg1 ^ nArg2 =0x12cb Однако в результате компиляции и выполнении исходного файла получается следующее: Arg1 =0x4660 Arg2 =0x255 ~nArg1 =0x4294962635 ~nArg2 =0x4294967040 nArg1 & nArg2 =0x52 nArg1 | nArg2 =0x4863 nArg1 ^ nArg2 =0x4811 Подскажите пожалуйста в чём ошибка? |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
все правильно выводит, тольок в десятичной системе
Это сообщение отредактировал(а) vinter - 18.9.2008, 16:59 |
|||
|
||||
dvmisha |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Однако, если убрать эту инструкцию, результат всё равно не такой. |
||||
|
|||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
что значит не такой? все там правильно. а если стереть программу, тогда ниче вообще не будет. |
|||
|
||||
dvmisha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Как же тогда получился вот такой результат (в книге):
Arg1 =0x1234 Arg2 =0xff ~nArg1 =0xffffedcb ~nArg2 =0xffffff00 nArg1 & nArg2 =0x34 nArg1 | nArg2 =0x12ff nArg1 ^ nArg2 =0x12cb |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
ОМГ, ты поменял свою строку с
на ? если в книге написано именно так то это опечатка. А результат у тебя выводит верный, НО в десятичной системе счисления |
|||
|
||||
dvmisha |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Спасибо. Поменял. Всё получилось. В книге действительно опечатка и моя невнимательность после первого ответа. |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
пометь тему решенной(верхний правый угол)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |